Какие кодировки с русскими буквами используются в сети интернет кодировка windows

– Все символы, которые могут отображаться на экране компьютера, описаны в таблице символов. В самой первой таблице символов не было русских букв. Для того работы с русскими буквами их надо было вписать в эту таблицу символов вместо ненужных…

Кодировка русского языка в компьютерных программах и в Интернете

Кодировка русского языка в компьютерных программах и в Интернете
– Все символы, которые могут отображаться на экране компьютера, описаны в таблице символов. В самой первой таблице символов не было русских букв. Для того работы с русскими буквами их надо было вписать в эту таблицу символов вместо ненужных символов, например, греческого алфавита. Современные кодировки поддерживают множество языков, среди которых и русский. Непонятно почему, но разработчики разных систем вписали русские буквы на разные места в своих таблицах символов, в результате чего появилось несколько кодировок русского языка. То есть, в разных кодировках расположение русских букв в таблице символов не соответствует. В результате, если кодировка системы, в которой вы просматриваете текст не совпадает с кодировкой системы, для которой данный документ готовился, то прочитать текст будет невозможно (вообще-то это возможно, но после перекодировки). Особенно сильно это несоответствие чувствуется при работе в Интернете, так как в нем работают компьютеры с разными системами. В Интернете наиболее распространены две кодировки русского языка – KOI-8 (кодировка UNIX-систем) и CP-1251 (кодировка Windows-систем). Большинство браузеров позволяют выбрать кодировку для просмотра Web-страниц, к этим браузерам относятся и Internet Explorer 3, 4 и Netscape Navigator 3, 4. Из всего вышесказанного можно сделать следующий вывод: если на Web-странице есть русские буквы, но они образуют непонятные слова (например – оПХБЕР БЯЕЛ), то почти наверняка, причиной этому является несоответствие кодировок. Выходов из этой ситуации два. Первый. Выбрать свою кодировку из предложенных автором страницы. Осмотрите внимательно всю открывшуюся страницу на предмет наличия возможности выбора кодировок, например, строки или картинки с названиями кодировок, при наличии таковой выберите свою. Своей для вас является основная кодировка, указанная в браузере. Если вы используете Windows, то ваша кодировка – CP-1251 (или Windows). Оформление меню выбора кодировки может быть самым разнообразным – от текстовой строки до движущейся картинки. При использовании этого метода вы пользуетесь возможностью выбора кодировки предоставленной самим разработчиком данной страницы, в случае отсутствия такой возможности перейдите ко второму методу. Второй выход: выбрать подходящую кодировку на своем браузере.

Князев А.А. Энциклопедический словарь СМИ. — Бишкек: Издательство КРСУ.
.
2002.

Полезное

Смотреть что такое «Кодировка русского языка в компьютерных программах и в Интернете» в других словарях:

  • Чувашская письменность — Содержание 1 Рунический алфавит 1.1 История 1.2 Письменнос …   Википедия

  • Транслит — Стиль этой статьи неэнциклопедичен или нарушает нормы русского языка. Статью следует исправить согласно стилистическим правилам Википедии. Эта статья  о передаче текста. О литературно критическом альманах …   Википедия

  • Юникод — Юникод[1] или Уникод[2] (англ. Unicode)  стандарт кодирования символов, позволяющий представить знаки практически всех письменных языков …   Википедия

1.

Дано:

I = 4 бит

Найти:

N — ?

Решение:

N = 2^i

N = 2^4 = 16

Ответ: 16

2.

Дано:

N = 100

Найти:

I — ?

Решение:

I = log_2N

I = log_2100 = 6,64 = 7 бит

Ответ: 7

3. Отметьте все верные утверждения о таблице символов ASCII:

  • это таблица всех символов, используемых на компьютере
  • к ней относятся первые 128 символов
  • это то же самое, что и кодовая страница
  • это таблица американского стандартного кода для обмена информацией
  • к ней относятся символы с кодами от 128 до 255

4. Десятичный код 67 имеет символ латинского алфавита C.

Ответ: C

5. В таблице латинские буквы расположены в алфавитном порядке. Символ V находится от символа A на расстоянии 86 — 65 = 21. Если код символа a — 97, то символ v находится на таком же расстоянии, и его код равен 97 + 21 = 118

Ответ: 118

6. Отметьте все правильные утверждения:

  • в текстовых файлах хранятся только коды символов
  • изображения символов хранятся в специальных шрифтовых файлах
  • кодовая страница содержит 256 символов
  • кодировка ASCII содержит буквы русского алфавита
  • кодировка ASCII содержит арабские цифры

7. Отметьте все правильные утверждения о кодировках UNICODE:

  • они позволяют уменьшить объем файлов
  • они, как правило, приводят к увеличению объема файла
  • в них на символ отводится 8 бит
  • в них на символ может отводиться больше 8 бит
  • можно использовать больше 256 символов одновременно

8. Какие кодировки с русскими буквами используются в сети Интернет?

  • кодировка MS DOS (кодовая страница 866)
  • кодировка Windows (кодовая страница 1251)
  • кодировка UTF-8 (UNICODE)
  • кодировка KOI-8R
  • одна русская кодировка

9.

Дано:

K = 34

I = 16 бит / 8 = 2 байта

Найти:

V — ?

Решение:

V = K cdot I

V = 34 cdot 2 = 68 байт

Ответ: 68

10.

V₁ — вес сообщения в кодировке КОИ-8  

V₂ — вес сообщения в кодировке Unicode

K — количество символов

V₁ + 560 бит = V₂  

V₁ = 8 бит * K  

V₂ = 16 бит * K

Теперь подставим значения V₁ и V₂ в первое выражение и найдем K:  

8 бит * K + 560 бит = 16 бит * K  

8K + 560 = 16K  

K = 560 / 8 = 70

Ответ: 70

11.

V₁ + 2048 байт = V₂

1 байт * K + 2048 байт = 2 байта * K  

K + 2048 = 2K  

K = 2048

K * 1 байт = 2048 символов

Ответ: 2048

12.

Дано:

K = 40 * 32 * 60 = 76 800

I = 8 бит / 8 = 1 байт

Найти:

V — ?

Решение:

V = K cdot I

V = 76 800 cdot 1 = 76 800 байт / 1024 = 75 Кбайт

Ответ: 75 Кбайт



Чтобы правильно отобразить html-документ, браузер должен знать какая кодировка символов использовалась при создании документа.
ASCII — одна из самых старых компьютерных кодировок, в которой каждому символу соответствует строго определенное число. Например, символу «a» соответствует число 97, а символу «A» — число 65.
Эта аббревиатура расшифровывается как American Standard Code for Information Interchange (американская стандартная кодировочная таблица для печатных символов и некоторых специальных кодов).
ASCII — это однобайтовая кодировка, в которую изначально заложено всего 128 символов: буквы латинского алфавита, арабские цифры и т.д.

Вы можете посмотреть на полный комплект Печатаемых символов ASCII.

Позже ASCII была расширена (изначально она не использовала все 8 бит), поэтому появилась возможность использовать уже не 128, а 256 (2 в 8 степени) различных символов, которые можно закодировать в одном байте информации.
Такое усовершенствование позволило добавлять в кодировку ASCII символы национальных языков разных стран, помимо уже существующей латиницы.
Вариантов расширенной кодировки ASCII существует очень много по причине того, что языков в мире тоже немало. Думаю, что многие из вас слышали о такой кодировке, как KOI8 (Код Обмена Информацией, 8 бит) — это тоже расширенная кодировка ASCII. KOI8 включала в себя цифры, буквы латинского и русского алфавита, а также знаки пунктуации, спецсимволы и псевдографику.

Кодировка ISO

Организация Международных стандартов (International Standards Organization) создала диапазон кодировок для различных алфавитов/языков.

Кодировки серии ISO 8859

Кодировка Описание
ISO 8859-1 (Latin-1) Расширенная латиница, включающая символы большинства западноевропейских языков (английский, датский, ирландский, исландский, испанский, итальянский, немецкий, норвежский, португальский, ретороманский, фарерский, шведский, шотландский (гэльский) и частично голландский, финский, французский), а также некоторых восточноевропейских (албанский) и африканских языков (африкаанс, суахили). В Latin-1 отсутствуют знак евро и заглавная буква Ÿ. Эта кодовая страница считается кодировкой по умолчанию для HTML-документов и сообщений электронной почты. Также этой кодовой странице соответствуют первые 256 символов Юникода.
ISO 8859-2 (Latin-2) Расширенная латиница, включающая символы центральноевропейских и восточноевропейских языков (боснийский, венгерский, польский, словацкий, словенский, хорватский, чешский). В Latin-2, как и в Latin-1, отсутствуют знак евро.
ISO 8859-3 (Latin-3) Расширенная латиница, включающая символы южноевропейских языков (мальтийский, турецкий и эсперанто).
ISO 8859-4 (Latin-4) Расширенная латиница, включающая символы североевропейских языков (гренландский, эстонский, латышский, литовский и саамские языки).
ISO 8859-5 (Latin/Cyrillic) Кириллица, включающая символы славянских языков (белорусский, болгарский, македонский, русский, сербский и частично украинский).
ISO 8859-6 (Latin/Arabic) Символы, используемые в арабском языке. Символы других языков с письмом на основе арабского не поддерживаются. Для корректного отображения текста в кодировке ISO 8859-6 требуется поддержка двунаправленного письма и контекстно-зависимых форм символов.
ISO 8859-7 (Latin/Greek) Символы современного греческого языка. Может использоваться также для записи древнегреческих текстов в монотонической орфографии.
ISO 8859-8 (Latin/Hebrew) Символы современного иврита. Используется в двух вариантах: с логическим порядком следования символов (требует поддержки двунаправленного письма) и с визуальным порядком следования символов.
ISO 8859-9 (Latin-5) Вариант Latin-1, в котором редко используемые символы исландского языка заменены на турецкие. Используется для турецкого и курдского языков.
ISO 8859-10 (Latin-6) Вариант Latin-4, более удобный для скандинавских языков.
ISO 8859-11 (Latin/Thai) Символы тайского языка.
ISO 8859-13 (Latin-7) Вариант Latin-4, более удобный для балтийских языков.
ISO 8859-14 (Latin-8) Расширенная латиница, включающая символы кельтских языков, таких как шотландский (гэльский) и бретонский.
ISO 8859-15 (Latin-9) Вариант Latin-1, в котором редко используемые символы заменены на необходимые для полной поддержки финского, французского и эстонского языков. Кроме того, в Latin-9 был добавлен знак евро.
ISO 8859-16 (Latin-10) Расширенная латиница, включающая символы южноевропейских и восточноевропейских (албанский, венгерский, итальянский, польский, румынский, словенский, хорватский), а также некоторых западноевропейских языков (ирландский в новой орфографии, немецкий, финский, французский). Как и в Latin-9, в Latin-10 был добавлен знак евро.

Для документов на английском и большинстве других западноевропейских языков, широко поддерживается кодирование ISO-8859-1.

Таблица кодов символов ISO-8859-1

В HTML ISO-8859-1 является кодировкой по умолчанию (в XHTML и в HTML5 кодировкой по умолчанию является UTF-8).
При использовании кодировки страницы, отличной от ISO-8859-1, вам необходимо указать это в теге <meta>.

Для HTML4:

<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">

Для HTML5:

<meta charset="UTF-8">

Примером ANSI-кодировки является всем известная Windows-1251.

Windows-1251 выгодно отличается от других 8 битных кириллических кодировок (таких как CP866 и ISO 8859-5) наличием практически всех символов, использующихся в русской типографике для обычного текста (отсутствует только знак ударения). Она также содержит все символы для других славянских языков: украинского, белорусского, сербского, македонского и болгарского.
Ниже приведены десятичные значения символов кодировки Windows-1251.

Для отображения символов таблицы в HTML-документе воспользуйтесь следующим синтаксисом:

&# + код + ;

Кодировка Windows-1251 (CP1251)

  .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
 
8.
 
Ђ
402
Ѓ
403

201A
ѓ
453

201E

2026

2020

2021

20AC

2030
Љ
409

2039
Њ
40A
Ќ
40C
Ћ
40B
Џ
40F
 
9.
 
ђ
452

2018

2019

201C

201D

2022

2013

2014

2122
љ
459

203A
њ
45A
ќ
45C
ћ
45B
џ
45F
 
A.
 
 
A0
Ў
40E
ў
45E
Ј
408
¤
A4
Ґ
490
¦
A6
§
A7
Ё
401
©
A9
Є
404
«
AB
¬
AC
­
AD
®
AE
Ї
407
 
B.
 
°
B0
±
B1
І
406
і
456
ґ
491
µ
B5

B6
·
B7
ё
451

2116
є
454
»
BB
ј
458
Ѕ
405
ѕ
455
ї
457
 
C.
 
А
410
Б
411
В
412
Г
413
Д
414
Е
415
Ж
416
З
417
И
418
Й
419
К
41A
Л
41B
М
41C
Н
41D
О
41E
П
41F
 
D.
 
Р
420
С
421
Т
422
У
423
Ф
424
Х
425
Ц
426
Ч
427
Ш
428
Щ
429
Ъ
42A
Ы
42B
Ь
42C
Э
42D
Ю
42E
Я
42F
 
E.
 
а
430
б
431
в
432
г
433
д
434
е
435
ж
436
з
437
и
438
й
439
к
43A
л
43B
м
43C
н
43D
о
43E
п
43F
 
F.
 
р
440
с
441
т
442
у
443
ф
444
х
445
ц
446
ч
447
ш
448
щ
449
ъ
44A
ы
44B
ь
44C
э
44D
ю
44E
я
44F

Таблица кодов символов Windows-1251

Кодировки стандарта UNICODE

Юникод (англ. Unicode) — стандарт кодирования символов, позволяющий представить знаки почти всех письменностей мира, и специальных символов. Представляемые в юникоде символы кодируются целыми числами без знака. Юникод имеет несколько форм представления символов в компьютере: UTF-8, UTF-16 (UTF-16BE, UTF-16LE) и UTF-32 (UTF-32BE, UTF-32LE). (Англ. Unicode transformation format — UTF).
UTF-8 — это в настоящее время распространённая кодировка, которая нашла широкое применение в операционных системах и веб-пространстве. Текст, состоящий из символов Unicode с номерами меньше 128 (область с кодами от U+0000 до U+007F), содержит символы набора ASCII с соответствующими кодами. Далее расположены области знаков различных письменностей, знаки пунктуации и технические символы. Под символы кириллицы выделены области знаков с кодами от U+0400 до U+052F, от U+2DE0 до U+2DFF, от U+A640 до U+A69F.

Кодировка UTF-8 является универсальной и имеет внушительный резерв на будущее. Это делает ее наиболее удобной кодировкой для использования в интернете.

Таблица кодов символов UTF-8 кирилица




В начале 90-х, когда произошел развал СССР и границы России были открыты, к нам стали поступать программные продукты западного производства. Естественно, все они были англоязычными. В это же время начинает развиваться Интернет. Остро встала проблема русификации ресурсов и программ. Тогда и была придумана русская кодировка Windows 1251. Она позволяет корректно отображать буквы славянских алфавитов:

  • русского;
  • украинского;
  • белорусского;
  • сербского;
  • болгарского;
  • македонского.

Разработка велась русским представительством Microsoft совместно с и «Параграф». За основу были взяты самописные разработки, которые в 1990-91гг имели хождение среди немногочисленных идеологов ИТ в России.

На сегодняшний день разработан более универсальный способ кодировать символы — UTF-8 (Юникод). В нем представлено почти 90% всех программных и веб-ресурсов. Windows 1251 применяется в 1,6% случаев. (Информация по исследованиям Web Technology Surveys)

UTF-8 — это много-байтовая кодировка, а Windows- 1251 однобайтовая. И более того, отличие только в кириллице.

Количество байтов кириллицы в UTF-8 будет в 2 раза больше, чем 1). латиницы в UTF-8 и 2). латиницы + кириллицы в Windows- 1251 → пример

Главное отличие кодировок – это используемый набор символов. В UTF-8 гораздо больше количество символов возможно представить, чем в Windows- 1251. Кодировка Windows- 1251 однобайтовая, т.е. представить в ней можно только 255 символов. Для кириллицы, впрочем, этого вполне достаточно, именно поэтому однобайтовые кодировки до сих пор так массово применяются.

Оглавление

  • Интернет: две
    основные кодировки кириллицы для пользователя MS Windows
  • Микрософтовские
    шрифты с кириллицей,
    включённые
    в поставку MS Windows
  • Бесплатные не-Микрософтовские
    , старые (сделанные для Windows 3.1) кириллические шрифты
  • Программы-перекодировщики: из одной кодировки в другую
  • Интернет: 2 основные кодировки кириллицы для пользователя MS Windows

    Итак, Вы работаете под MS Windows и хотите работать с русскими сайтами в Интернете или же просто читать/писать по-русски в редакторе.
    Авторы кириллических сайтов Интернета используют разные

    методы представления алфавита, используют разные
    кодировки
    кириллицы.

    Кодировка определяет числовой код

    , присваиваемый каждому элементу набора символов. Скажем, букве
    ‘л’
    присвоены разные коды в различных кодировках кириллицы, например:

      219
      в кодировке ISO-8859-5 (используется для русского на некоторых UNIX-машинах, а также, например, в странах бывшей Югославии)

    • 235
      в кодировке Windows-1251 (используется в странах бывшего СССР для русских, украинских, белорусских и т.п. текстов, а также в Болгарии и странах бывшей Югославии)
    • 204
      в кодировке KOI8-R (используется для русских текстов)
    • 171
      в кодировке DOS-866 (используется в сети Fido7 и на компьютерах с OS/2)

    Кодировка тесно связана со шрифтами — шрифт обычно делается под конкретную кодировку, то есть, например в шрифте кодировки KOI8-R позиция 204

    отведена под
    ‘л’
    . В шрифте кодировки Windows-1251 буква
    ‘л’
    находится совсем на другой позиции (
    235
    ), а
    204
    отведена под букву
    ‘М’
    . Поэтому текст, набранный в кодировке KOI8-R будет нечитабельным, если для его просмотра в редакторе использовать шрифт кодировки Windows-1251 — вместо
    ‘л’
    будет высвечиваться
    ‘М’
    и т.д.

    То есть, кодировки кириллицы несовместимы между собой (так исторически сложилось).

    А вот у букв английского алфавита — противоположная ситуация: английские буквы, а также цифры, знаки препинания, кавычки и т.п. — так называемый набор ASCII — присутствуют в каждой
    из ‘старых’ кодировок мира (новая кодировка Unicode немного по-другому устроена) — кириллических, японских, китайских, … и в каждой из этих кодировок им присвоено одно и то же значение, то есть в
    любой
    такой кодировке (а, значит, и в любом шрифте):

    • английская ‘r’ — код 114
    • цифра 5 — код 53
    • двоеточие — 58

    Поэтому английское слово ‘dog’ будет нормально читаться, какой бы шрифт не был выбран в редакторе — хоть японский, хоть русский.

    Это был маленький кусок ‘теории’, а теперь — к практике.

    Русскоговорящий пользователь MS Windows

    обычно сталкивается в Интернете с
    двумя
    кодировками кириллицы:

    • Windows-1251
      В меню выбора кодировки в браузерах это выглядит обычно как «Cyrillic(Windows)» или «Cyrillic(Windows-1251)»
    • KOI8-R
      В меню выбора кодировки в браузерах это выглядит обычно как «Cyrillic(KOI8-R)»

    Примечание. В не

    -Интернетовских приложениях MS Windows — таких как, например, текстовые редакторы или программы MS Office, используется в настоящее время только
    одна
    кодировка кириллицы -Windows-1251. Фирма Микрософт выбрала именно эту кодировку для платформы MS Windows, и поэтому когда Вы видите
    ‘Cyrillic’
    в меню выбора скрипта для шрифта или
    ‘Russian’
    в меню выбора клавиатурной раскладки, то на самом деле там подразумевается ‘кодировка Windows-1251’, то есть надо понимать как «Cyrillic, Windows-1251» и «Russian, Windows-1251» соответственно.

    Все Микрософтовские шрифты, содержащие кириллицу («Arial», «Times New Roman», …) поддерживают именно кодировку Windows-1251, и клавиатурные раскладки Микрософт обеспечивает только для кодировки Windows-1251.

    Современные Интернетовские приложения — браузеры, почтовые и новостные программы, такие, как MS Internet Explorer, Outlook Express, MS Outlook 2000, Netscape вер. 4 и выше, Mozilla, и др.. —не

    требуют наличия KOI8-R
    шрифтов
    , они и без этого умеют обрабатывать KOI8-R тексты (Web-страницы, e-mail, …). Как? Пояснения будут даны ниже, в следующем разделе, посвящённом KOI8-R.

    Старые системы (например, Windows 3.1/3.11) и старые программы (например, Netscape 3
    ) требовали от пользователя установки KOI8-R шрифтов. Некоторые программы и сейчас требуют KOI8-R шрифты для работы с KOI8-R текстом, но таких программ мало, и они не относятся к разряду часто используемых. Это некоторые терминальные программы и т.п.

    У меня на данной странице предлагается сгрузить KOI8-R шрифты для таких старых систем и/или старых или специфических программ, но я поместил эту информацию в самый конец страницы, так как она редко

    кому нужна. Это раздел данной страницы, который называется «Бесплатные
    не-Микрософтовские
    , старые (от Windows 3.1) кириллические шрифты»

    Зачем пользователю Windows знать про кодировку KOI8-R? Почему такому пользователю не нужны KOI8-Rшрифты?

    Кодировка KOI8-R, так же, как и другие кириллические кодировки, используется для представления русских текстов, например, на Интернетовской странице, но её основное предназначение — быть сетевой, транспортной

    кодировкой, каковой она и является де-факто с самых ранних дней Интернета. Ведь разные компьютеры используют разные
    локальные
    (т.е. только для данной платформы) кодировки для русского:

      MS Windows — «Windows-1251»

    • OS/2 и DOS (что включает сеть FIDO7) — «CP-866»
    • UNIX — «ISO-8859-5» (в России — чаще KOI8-R)
    • Apple Macintosh — «Mac Cyrillic»

    К сожалению, все эти кодировки несовместимы
    между собой, по-разному кодируют русские буквы. Так исторически сложилось, тут уж ничего не поделаешь. То есть, пользователь Макинтоша
    не
    сможет вот так просто прочесть русский в файле, если текст там — в кодировке «Windows-1251», нужно использовать спец. средства, конвертеры, и т.п. То же самое — для пользователя Windows, если ему дать текст в кодировке «Mac Cyrillic».

    Как же тогда всем этим разным

    (в плане кодировок) компьютерам обмениваться русскими сообщениями через Интернет? Используется общая для всех,
    транспортная, сетевая
    кодировка KOI8-R, которую понимают все компьютеры. То есть, большинство Интернетовских программ с самого начала поддержки русского ‘знали’, что приходящие и уходящие сообщения — в KOI8-R, и скажем, почтовой программе под Макинтошем не надо было уметь обрабатывать все многочисленные русские кодировки, достаточно было своей локальной и KOI8-R в качестве ‘транспортной’.

    Если все эти разные компьютеры стали бы слать в Интернет русские сообщения в локальной

    кодировке (из-под Windows — в Windows-1251, из-под Mac — в «Mac Cyrillic», и т.д.), то ситуация была бы непростая :)

    Самый простой пример — новостные конференции, Newsgroups. В дискуссии в такой конференции могут участвовать пользователи различных систем — Mac, Windows, Unix. Тогда просто напрашивается правило использования некой общей для всех кодировки сообщений, чтобы на любой платформе читалось. Исторически такой кодировкой стала KOI8-R. А представьте теперь, что так не произошло, и в некой конкретной дискуссии в русской конференции, где тема дискуссии тоже русская, люди бы стали отвечать каждый в кодировке своей платформы: одно сообщение — от пользователя Unix, ответ — от пользователя Макинтоша, ответ ему — от пользователя OS/2 или Windows. Ничего прочесть было бы нельзя…

    Поэтому в большинстве русских новостных конференций все посылают сообщения в KOI8-R, на какой бы платформе ни работали. Естественно, если это узко-специальная конференция, где пользователи — только с одной платформы, например, Windows, то тогда они могут договориться и посылать в кодировке «Windows-1251″… Но, кстати, даже в конференциях иерархии microsoft.public.ru.russian.*

    (microsoft.public.ru.russian.windowsxp и др.) всё-таки все пользуются KOI8-R :)

    То же самое для e-mail — большинство писем ‘путешествует’ по сети в виде KOI8-R текстов, и опять же, если группа друзей (все — под Windows) решила для себя, что будут посылать e-mail в кодировке Windows-1251, то это понятно и нормально.

    То есть, KOI8-R

    это де-факто стандарт для обмена русскими сообщениями в Интернете, это
    сетевая, транспортная
    кодировка для русского, в то время как на каждом типе компьютеров используется
    локальная
    кодировка для русского. Одна из таких
    локальных
    кодировок — «Windows-1251», это то, что используется для русского под
    MS Windows
    .

    Кодировка KOI8-R и Интернетовские программы под MS Windows

    Пользователь MS Windows должен иметь возможность работать с текстами в кодировке KOI8-R, а не только с текстами в ‘родной’ для Windows кодировки Windows-1251:

    • некоторые русские Web-страницы
      — в кодировке KOI8-R. То есть, браузер должен уметь показывать KOI8-R текст. Кроме того, такие страницы иногда содержат
      формы
      ввода текста, то есть, там предполагается вводKOI8-R текста в дополнение к выводу KOI8-R на экран.
    • e-mail
      . Часто нужно и отсылать и получать KOI8-R письма по электронной почте
    • Русскоязычные новостные конференции — Usenet Newsgroups
      (Discussion Groups) — часто используют KOI8-R, то есть, KOI8-R используется и при отсылке и при высвечивании сообщений.

    Если у Вас старая

    программа типа Netscape
    3
    , то для работы с KOI8-R в указанных выше ситуациях, Вам придётся установить KOI8-R
    шрифты
    (они предлагаются ниже на данной странице) и, если надо не только читать, но и писать, то придётся установить
    клавиатурные
    средства для KOI8-R (они предлагаются в разделе Клавиатура моего сайта).

    Но в настоящее время при современных

    программах, этого
    не
    требуется! То есть,
    не
    нужно ни KOI8-R шрифтов, ни KOI8-R клавиатуры. Более того, современные программы просто не могут работать с KOI8-R шрифтами. Подробности — ниже.

    Современные Интернетовские программы (браузеры, почтовые и новостные), такие как

    • Internet Explorer
    • Outlook Express
    • MS Outlook вер. 2000 и выше
    • Netscape вер. 4 и выше и его Почтовый (Mail) и Новостной (News) компоненты
    • Мозилла и её Почтовый (Mail) и Новостной (News) компоненты

    позволяют Вам работать только с ‘родными’, локальными для MS Windows шрифтами и клавиатурными средствами — кодировки Windows-1251 («Cyrillic(Windows)»), даже если надо читать KOI8-R тексты и/или писать в KOI8-R.
    Современные программы позволяют, например, чтобы письмо ушло в Интернет

    в сетевой, транспортной кодировке KOI8-R, а вот
    создавали
    Вы его с помощью Windows-1251 шрифтов и обычной Windows-1251 клавиатуры.

    Как эти современные программы это делают? Они, незаметно для пользователя, перекодируют

    тексты между KOI8-R и Windows-1251:

    • чтение
      KOI8-R текстов Эти программы сначала конвертируют KOI8-R текст в Windows-1251 текст, а уж потом показывают Вам полученный Windows-1251текст — используя ‘родные’ для Windows шрифты кодировки Windows-1251 типа «Arial» или «Courier New».

      Это делается, например, в следующих случаях:

      когда надо показать KOI8-R
      Web-страницу

    • когда надо показать пришедшее письмо (e-mail
      ), если оно путешествовало в Интернете в виде текста сетевой, транспортной кодировки KOI8-R
    • когда надо показать статью в новостной конференции (Newsgroup
      , (Discussion Group)) (напомню, что большинство русских Newsgroups используют KOI8-R как ‘общую для всех платформ’ кодировку, то есть это KOI8-R тексты)
  • Когда нужно писать
    в KOI8-R, то есть, создавать KOI8-R текст. Эти программы сначала дают Вам вводить текст, использую ‘родные’ для MS Windows шрифты и клавиатурные средства кодировки Windows-1251 — точно так же, как Вы, скажем, в MS Word вводите текст. Потом, когда ввод окончен, эти программы незаметно для Вас конвертируют введённый текст в KOI8-R текст!

    Например:

      Вы готовите письмо (e-mail
      ) или сообщение в новостную конференцию (Newsgroup) и хотите, чтобы
      в Интернет Ваш текст ушёл
      в кодировке KOI8-R, как большинство делает.

      Современные программы дают Вам ввести текст, используя обычные (не KOI8-R), шрифты и клавиатурные средства для русского, а потом перекодируют введённый текст в KOI8-Rперед тем

      , как послать Ваше сообщение в Интернет — чтобы оно путешествовало в Интернете в виде текста сетевой, транспортной кодировки KOI8-R.

      Естественно, чтобы программа так

      работала,
      Вы
      должны ей указать, что хотите именно в KOI8-R отправить, т.е. в меню надо выбрать эту кодировку.

  • Ввод текста в форму
    на KOI8-R Web-странице. То же самое — Вы вводите текст, используя обычные шрифты и клавиатурные средства для русского MS Windows, и только когда нажмёте кнопку для отсылки введённого, вот тогда браузер, зная, что страница — в кодировке KOI8-R, перекодирует введённый текст в KOI8-R и только потом текст уйдёт из браузера.

Все упомянутые выше программы должны быть настроены на русский

, чтобы так работать. Настройка на русский для Internet Explorer, Outlook Express, MS Outlook вер. 2000 и выше, и для Netscape/Mozilla с их почтовыми (Mail) и новостными (News) компонентами описана в разделе
«Русский в браузерах, Почтовых, Новостных программах»
моего сайта. Но его следует читать только
после
того, как Вы закончите чтение данной страницы о русских шрифтах и кодировках.

Другие программы, не
упомянутые выше (другие e-mail программы; графические программы, музыкальные, и т.п.) требуют своей собственной, уникальной настройки на русский. Я лично пробовал и знаю только программы, упомянутые в предыдущих параграфах, так что если Вам надо настроить на русский WinAmp, Eudora или что ещё — смотрите
ссылки на сайты других авторов
в разделе
«Ещё о русификации. Вопросы и Ответы, ссылки
«
моего сайта.

Web и два типа шрифтов

В общем, не углубляясь в детали, в Интернете используются 2

метода показа
текста
на экране:

  • Гипертекстовые
    страницы — обычные страницы, HTML и т.п. Например, страница поискового сервиса Yandex -https://www.yandex.ru/
    index.html
    .
  • Простой Текст
    — например, экран, показывающий
    каталог
    на FTP-сайте антивирусной программы McAfee -ftp://ftp.nai.com/pub/datfiles/english/ или экран, показывающий
    содержимое
    некоего
    простого текстового
    файла в таком каталоге, например, файла readme.
    txt
    : ftp://ftp.nai.com/pub/datfiles/english/readme.
    txt

Каждый из этих 2-х типов экранов использует свой собственный стиль шрифта в браузере:

  • Пропорциональные
    шрифты (
    Proportional
    width fonts) — для
    Гипертекстовых
    страниц ( с пропорциональной шириной букв — ‘ж’ шире, чем ‘т’ ) (Netscape
    4
    использует другое название —
    Variable
    width fonts)

    Пример — «Arial» или «Times New Roman»

  • Равноширокие
    шрифты (
    Fixed
    width fonts,
    Monospace
    fonts) — для высвечивания
    Простого Текста
    ( все буквы — фиксированной ширины )

    Пример — «Courier New»

К Оглавлению

Микрософтовские Windows-1251 шрифты, включённые в Windows

В следующей главке предлагаются для загрузки старые (сделанные для Windows 3.1)не-Микрософтовские кириллические шрифты — и для кодировки KOI8-R, и для кодировки Windows-1251.

Но, как писалось выше, Микрософт использует для кириллицы в своих продуктах как раз кодировку Windows-1251 («Cyrillic(Windows)»). В терминологии Операционных Систем это Code Page 1251

— «Кодовая Страница 1251», поэтому часто можно видеть фразы типа «шрифты CP-1251», где CP — от
C
ode
P
age.

То есть, когда в диалогах Windows Вы видите «Cyrillic», то это на самом деле означает «Cyrillic, CP-1251

«.

Поэтому в 99% случаев нет никакого смысла загружать из Интернета некие не-Микрософтовские русские шрифты кодировки Windows-1251, т.к. в Windows уже включены такие шрифты, а кроме того, качество Микрософтовских шрифтов обычно намного лучше. Более того, большинство современных

приложений просто-напросто не могут работать с такими старыми не-Микрософтовскими шрифтами, а работают с современными юникодовыми шрифтами, включёнными в Windows, такими, как «Arial» и др. (Точно так же в 99% случаев нет смысла загружать из Интернета KOI8-Rшрифты — как было описано выше, современные программы с ними не работают, они обрабатывают KOI8-R тексты без этого.)

Какие же из стандартных шрифтов Windows включают кириллицу? Обычно это многоязычные шрифты «Arial», «Times New Roman», и «Courier New», а часто ещё и «Verdana», «Tahoma», и др.

Кириллица есть в таких стандартных шрифтах Windows даже если сама Windows не русская, а обычная английская (немецкая, …). (для совсем старых версий Windows — 3.1/3.11

— это не так, в то время для английской версии надо было доставать откуда-то русские шрифты типа тех, что предлагаются в следующей главке — они и сделаны были как раз для Windows
3.1
)

Ниже приводится процедура проверки наличия русских Windows-1251 шрифтов в составе Windows 95/98/ME/NT 4.0/2000/XP/2003/Vista и их активации

, если это требуется

1. Русская (локализованная) версия MS Windows

Пользователи такой системы конечно имеют кириллицу в стандартных шрифтах Windows (как и пользователи Пан-Европейской

Windows 95).

Для проверки вызовите редактор Wordpad (Start/Programs/Accessories/Wordpad) и увидите, что стандартные шрифты поддерживают кириллицу

в дополнение к другим скриптам, таким, как «Western», например:

  • Пропорциональные шрифты (Proportional fonts) — «Arial (Cyrillic)», «Times New Roman (Cyrillic)»
  • Равноширокий шрифт (Fixed font) — «Courier New (Cyrillic)»

2. Windows 95/98/ME

Пользователи английской

(и инсталлированной как английская) или другой нерусской версии Windows
95/98/MEизначально
не имеют кириллицы в стандартных шрифтах. Чтобы активировать поддержку кириллицы в стандартных шрифтах,
требуется
запустить Микрософтовский пакет многоязычной поддержки -«
MS Multilanguage Support
» — что делается обычно через Control Panel. (при этом заодно и
клавиатурные
файлы для русского появляются).

Вот моя короткая инструкция по этому пакету: «Поддержка кириллицы в Windows 95/98/ME — MS Multilanguage Support».

3. Windows NT 4.0/2000/XP/2003/Vista

Пользователи английской

(и инсталлированной как английская) или другой нерусской версии Windows
NT 4.0/2000/XP/2003/Vista
уже имеют кириллицу в стандартных шрифтах!

Это легко проверить, вот пара способов:

  • Если есть доступ к Интернету, пойти на русский сайт, например, «Поисковая система Яндекс» и убедиться, что русский текст читается, то есть шрифты типа «Arial» или «Times News Roman» — стандартные Микрософтовские, те, что браузер использует для показа, содержат кириллицу, а иначе бы сайт не читался.
  • Вызовите редактор Wordpad (Start/Programs/Accessories/Wordpad) и увидите, что стандартные шрифты поддерживают кириллицу
    в дополнение к другим скриптам, таким, как «Western», например: Пропорциональные шрифты (Proportional fonts) — «Arial (Cyrillic)», «Times New Roman (Cyrillic)»
  • Равноширокий шрифт (Fixed font) — «Courier New (Cyrillic)»

Важное замечание — только для Windows 2000:

Хотя шрифты кодировки Windows-1251изначально

активны под Windows 2000, эта версия Windows, в отличие от Windows NT 4.0 и Windows XP/2003/Vista, требует
дополнительного
шага активации кириллицы. Этот шаг обеспечивает
полную
поддержку кириллицы, например, активирует таблицы перекодировки между разными кириллическими кодировками, копирует файлы клавиатурной раскладки для языков, которые кириллицу используют и т.п. Итак, пользователь Windows 2000
обязан
сделать следующее (что не требуется под Windows NT 4.0 и Windows XP/2003/Vista):

  1. Start / Settings / Control Panel
  2. Щёлкнуть на иконку-глобус Regional Options
  3. В окне Regional Options, в разделе General
    , нижняя часть экрана отведена под пользовательские языковые установки —
    Language Settings for the System
    .
  4. Найдите там строку «Cyrillic» и если слева не стоит ‘галка’, то поставьте её и нажмите кнопку Apply
    . Система попросит вставить инсталялционный CD-ROM Windows 2000 и начнёт установку пакета поддержки кириллицы.

Выше было описано, как активировать поддержку кириллицы (кодировки Windows-1251) в стандартных Микрософтовских шрифтах Windows 95/98/ME/NT 4.0/2000/XP/2003/Vista.

Итак, если в Вашей

версии MS Windows теперь:

  • кириллица есть в стандартных шрифтах типа «Arial» и
  • Вам не
    нужны шрифты кодировку
    KOI8-R
    (то есть, как было описано выше, Вы работаете с
    современными
    Интернетовскими программами, которые дают работать с KOI8-R текстами,
    не
    требуя KOI8-R шрифтов и клавиатуры; или же Вы вообще не работаете с русским в Интернете, только в редакторах типа MS Word)

то Вам не
надо дальше читать данную страницу, т.к. ниже — информация для тех, у кого
старые
Интернетовские программы, например, Netscape
3
и/или старая Windows — версии 3.1/3.11: там описано, как пользоваться (например, в Netscape 3 и/или под Windows 3.1)
не
-Микрософтовскими шрифтами типа «ER Bukinist»и/или шрифтами KOI8-R. Ни те, ни другие шрифты просто-напросто не работают в современных программх типа Internet Explorer, Outlook Express, Mozilla, и т.д. поэтому пользователям таких программ и не надо дальше эту страницу читать. (Современные программы работают с современными, юникодовыми шрифтами типа «Arial»).

К Оглавлению

Старые не-Микрософтовские кириллические шрифты

Как загрузить эти шрифты с моего сайта

Ниже Вы найдёте ссылку для загрузки старых не-Микрософтовских шрифтов — несколько Windows-1251

шрифтов и несколько
KOI8-R
шрифтов, которые я в своё время нашёл в Интернете и протестировал на пригодность работы, а также их детальное описание. Но такие шрифты нужны в настоящее время
только
в исключительных случаях:

Важно!

Как объяснялось в конце предыдущей главки, Вам могут потребоваться такие старые (сделанные для Windows 3.1) шрифты
только
в следующих
нестандартных
ситуациях (
большинству
пользователей такие шрифты не нужны):

  • Вы работаете с очень старыми версиями Windows -Windows 3.1/3.11
    или
  • Вам нужны шрифты кодировки KOI8-R
    . Как было объяснено в начале данной страницы, Вам требуются шрифты KOI8-R
    только
    если Вы работаете с некой несовременной Интернетовской программой, например, Netscape версии
    3
    . Редкий случай! Современные программы, как было описано выше,
    не
    нуждаются в KOI8-R шрифтах при обработке текстов кодировки KOI8-R (и не могут работать с такими шрифтами).

Ниже на данной странице — инструкции только для такой, нестандартной

ситуации, как одна из описанных выше. Поэтому если это не Ваш случай, то данная страница закончена, дальше читать не надо.

Все предлагаемые старые шрифты позволяют Вам читать на Web-странице одновременно и русский, и английский текст.

Вам надо создать каталог(directory,folder

), куда Вы будете загружать из Интернета (
download
) файл со шрифтами, например, каталог
C:RUSFONTS
.

Я собрал все найденные шрифты в один файл(архив) —ForWWW.

zip. Чтобы загрузить этот файл, просто щёлкните мышкой на подчеркнутом имени файла ниже, и Ваш браузер предложит Вам
Сохранить Файл на диске
(
SAVE FILE
диалог). Там Вы должны будете указать на каталог, созданный Вами для хранения русских шрифтов —
C:RUSFONTS
.

ПРИМЕЧАНИЕ :
Если вместо предложения «
Сохранить Файл
» Ваш браузер пытается
показать содержимое
этого файла на экране (редко, но бывает), тогда попробуйте загрузить этот файл снова, но при этом нажмите и держите клавишу
SHIFT
в то время, когда Вы щелкаете мышкой на подчеркнутом имени файла.

Вот она, ссылка для загрузки:

файл ForWWW.zip

После записи этого файла-архива на Ваш компьютер, Вам надо раз-архивировать

, извлечь шрифты, хранящиеся в нём —
extract files
.

Для этого Вы можете использовать программу WinZip for Windows, если она у Вас есть, ИЛИ

простую MS DOS программу
pkunzip
. Если у Вас нет программы
pkunzip
, тогда загрузите ее, щёлкнув мышкой на подчеркнутом имени файла -pkunzip.exe, в каталог
C:WINDOWS
(
C:WinNT
в NT 4.0/2000) на Вашем компьютере.

Чтобы извлечь файлы из архива с помощью программы pkunzip

, выполните следующие 2 команды MS DOS(первая из них — переход в нужный каталог, вторая — собственно открытие архива):
C:……..> cd RUSFONTS C:RUSFONTS> pkunzip forwww.zip Эти команды можно ввести и будучи в MS Windows — надо открыть окно-приложение MS-DOS Prompt
:

  • в Windows 3.1, 3.11 это иконка «MS-DOS Prompt» в группе Main
  • в Windows 95/98/ME — Start / Programs / MS-DOS Prompt
  • в Windows NT 4.0 — Start / Programs / Command Prompt
  • в Windows 2000/XP/2003/Vista — Start / Programs / Accessories / Command Prompt

Краткое описание загруженных шрифтов

ПРИМЕЧАНИЕ :
Я собрал в файл ForWWW.zip такие шрифты, которые точно работают в старых версиях Netscape — вер. 2,3 — под всеми вариациями Windows. Если же Вы где-то нашли
другую
версию того же самого шрифта, то он может неверно работать с Netscape 2,3 или с какой-то из версий Windows (например, Windows NT 4.0).

Напоминаю, что при работе со старым

браузером типа Netscape 3 Вам необходимо установить как минимум
4
русских шрифта:

  • Proportional и Fixed шрифты для кодировки KOI8-R
  • Proportional и Fixed шрифты для кодировки CP-1251(Windows)
    («Windows-1251»)

(как было описано выше на данной странице, современные
браузеры
не
нуждаются в KOI8-R шрифтах, работают
только
с Windows-1251 шрифтами)

а)

Шрифты кодировки
KOI8-R
:

  • ‘ER Bukinist KOI-8 Normal’
    Proportional(Пропорциональный) шрифт — файл
    bkkoi8n.TTF
    — датирован 20.12.95
  • ‘ROL:KOI8-Courier’
    Fixed(Равноширокий) шрифт — файл
    rolk8c1.TTF
    — датирован 27.02.97.

    Примечание.
    Под Windows
    NT 4.0
    — версии
    до
    Service Pack 3 — шрифт
    ‘ROL:KOI8-Courier’
    работает с ошибкой при показе
    списков
    , как например, на странице поиска Yahoo!. Поэтому в
    этих
    версиях
    NT
    надо использовать другой Fixed KOI8-R шрифт:

    ‘ER Kurier KOI-8 Normal’

    Fixed(Равноширокий) шрифт — файл
    cokoi8n.TTF
    — датирован 15.11.95

б)

Шрифты кодировки
CP-1251(Windows)
:

  • ‘ER Bukinist 1251’
    Proportional(Пропорциональный) шрифт — файл
    bk1251n.TTF
    — датирован 05.03.95
  • ‘ER Kurier 1251’
    Fixed(Равноширокий) шрифт — файл
    co1251n.TTF
    — датирован 17.09.95

К Оглавлению

Что такое кодировка windows 1251

Windows-1251 – набор символов и кодировка, являющаяся стандартной 8-битной кодировкой для всех русских версий Microsoft Windows. Пользуется довольно большой популярностью. Windows-1251 выгодно отличается от других 8‑битных кириллических кодировок (таких как CP866, KOI8-R и ISO 8859-5) наличием практически всех символов, использующихся в русской типографике для обычного текста; она также содержит все символы для близких к русскому языку языков: украинского, белорусского, сербского и болгарского.

Что такое кодировка UTF-8

UTF-8 – в настоящее время распространённая кодировка, реализующая представление Юникода, совместимое с 8-битным кодированием текста. Нашла широкое применение в операционных системах и веб-пространстве. Текст, состоящий только из символов Юникода с номерами меньше 128, при записи в UTF-8 превращается в обычный текст ASCII. Остальные символы Юникода изображаются последовательностями длиной от 2 до 6 байт.

Символ в кодировке UTF-8 может кодироваться аж 6 байтами (пока используется только 4 и больше не планируется). Для русского языка, например, символ занимает 2 байта. Все символы, которые есть в таблице символов – поддерживаются этой кодировкой. К примеру, если вам нужен знак копирайта (©), то вам не нужно искать особый шрифт или же изображать символов в графическом формате.

Скопировать ссылку

Решения проблемы с кодировкой в CMD. 2 Способ.

Теперь рассмотрим ещё одну ситуацию, когда могут возникнуть проблемы с кодировкой в CMD.

Допустим, ситуация требует сохранить результат выполнения той или иной команды в обычный «TXT» файл. В приделах этого поста возьмём для примера команду «HELP».

Задача

: Сохранить справку CMD в файл «HelpCMD.txt. Для этого создайте Bat файл и запишите в него следующие строки.

После выполнения Bat файла в корне диска «C:» появится файл «HelpCMD.txt» и вместо справки получится вот что:

Естественно, такой вариант не кому не понравится и что бы сохранить справку в понятном для человека виде, допишите в Bat файл строку.

Теперь содержимое кода будет такое.

После выполнения «Батника» результат будет такой:

Здравствуйте, уважаемые читатели блога KtoNaNovenkogo.ru. Сегодня мы поговорим с вами про то, откуда берутся кракозябры на сайте и в программах, какие кодировки текста существуют и какие из них следует использовать. Подробно рассмотрим историю их развития, начиная от базовой ASCII, а также ее расширенных версий CP866, KOI8-R, Windows 1251 и заканчивая современными кодировками консорциума Юникод UTF 16 и 8.

Кодировка русского языка UTF 8 самая часто встречаемая

Кому-то эти сведения могут показаться излишними, но знали бы вы, сколько мне приходит вопросов именно касаемо вылезших кракозябров (не читаемого набора символов). Теперь у меня будет возможность отсылать всех к тексту этой статьи и самостоятельно отыскивать свои косяки. Ну что же, приготовьтесь впитывать информацию и постарайтесь следить за ходом повествования.

ASCII — базовая кодировка текста для латиницы

Развитие кодировок текстов происходило одновременно с формированием отрасли IT, и они за это время успели претерпеть достаточно много изменений. Исторически все начиналось с довольно-таки не благозвучной в русском произношении EBCDIC, которая позволяла кодировать буквы латинского алфавита, арабские цифры и знаки пунктуации с управляющими символами.

Но все же отправной точкой для развития современных кодировок текстов стоит считать знаменитую ASCII (American Standard Code for Information Interchange, которая по-русски обычно произносится как «аски»). Она описывает первые 128 символов из наиболее часто используемых англоязычными пользователями — латинские буквы, арабские цифры и знаки препинания.

Еще в эти 128 знаков, описанных в ASCII, попадали некоторые служебные символы навроде скобок, решеток, звездочек и т.п. Собственно, вы сами можете увидеть их:

Пример кодировки ASCII

Именно эти 128 символов из первоначального вариант ASCII стали стандартом, и в любой другой кодировке вы их обязательно встретите и стоять они будут именно в таком порядке.

Но дело в том, что с помощью одного байта информации можно закодировать не 128, а целых 256 различных значений (двойка в степени восемь равняется 256), поэтому вслед за базовой версией Аски появился целый ряд расширенных кодировок ASCII, в которых можно было кроме 128 основных знаков закодировать еще и символы национальной кодировки (например, русской).

Тут, наверное, стоит еще немного сказать про системы счисления, которые используются при описании. Во-первых, как вы все знаете, компьютер работает только с числами в двоичной системе, а именно с нулями и единицами («булева алгебра», если кто проходил в институте или в школе). Один байт состоит из восьми бит, каждый из которых представляет из себя двойку в степени, начиная с нулевой, и до двойки в седьмой:

Преобразование двоичных чисел в шестнадцатиричные при кодировании

Не трудно понять, что всех возможных комбинаций нулей и единиц в такой конструкции может быть только 256. Переводить число из двоичной системы в десятичную довольно просто. Нужно просто сложить все степени двойки, над которыми стоят единички.

В нашем примере это получается 1 (2 в степени ноль) плюс 8 (два в степени 3), плюс 32 (двойка в пятой степени), плюс 64 (в шестой), плюс 128 (в седьмой). Итого получает 233 в десятичной системе счисления. Как видите, все очень просто.

Но если вы присмотритесь к таблице с символами ASCII, то увидите, что они представлены в шестнадцатеричной кодировке. Например, «звездочка» соответствует в Аски шестнадцатеричному числу 2A. Наверное, вам известно, что в шестнадцатеричной системе счисления используются кроме арабских цифр еще и латинские буквы от A (означает десять) до F (означает пятнадцать).

Ну так вот, для перевода двоичного числа в шестнадцатеричное прибегают к следующему простому и наглядному способу. Каждый байт информации разбивают на две части по четыре бита, как показано на приведенном выше скриншоте. Т.о. в каждой половинке байта двоичным кодом можно закодировать только шестнадцать значений (два в четвертой степени), что можно легко представить шестнадцатеричным числом.

Причем, в левой половине байта считать степени нужно будет опять начиная с нулевой, а не так, как показано на скриншоте. В результате, путем нехитрых вычислений, мы получим, что на скриншоте закодировано число E9. Надеюсь, что ход моих рассуждений и разгадка данного ребуса вам оказались понятны. Ну, а теперь продолжим, собственно, говорить про кодировки текста.

Расширенные версии Аски — кодировки CP866 и KOI8-R с псевдографикой

Итак, мы с вами начали говорить про ASCII, которая являлась как бы отправной точкой для развития всех современных кодировок (Windows 1251, юникод, UTF 8).

Изначально в нее было заложено только 128 знаков латинского алфавита, арабских цифр и еще чего-то там, но в расширенной версии появилась возможность использовать все 256 значений, которые можно закодировать в одном байте информации. Т.е. появилась возможность добавить в Аски символы букв своего языка.

Тут нужно будет еще раз отвлечься, чтобы пояснить — зачем вообще нужны кодировки текстов и почему это так важно. Символы на экране вашего компьютера формируются на основе двух вещей — наборов векторных форм (представлений) всевозможных знаков (они находятся в файлах со шрифтами, которые установлены на вашем компьютере) и кода, который позволяет выдернуть из этого набора векторных форм (файла шрифта) именно тот символ, который нужно будет вставить в нужное место.

Понятно, что за сами векторные формы отвечают шрифты, а вот за кодирование отвечает операционная система и используемые в ней программы. Т.е. любой текст на вашем компьютере будет представлять собой набор байтов, в каждом из которых закодирован один единственный символ этого самого текста.

Программа, отображающая этот текст на экране (текстовый редактор, браузер и т.п.), при разборе кода считывает кодировку очередного знака и ищет соответствующую ему векторную форму в нужном файле шрифта, который подключен для отображения данного текстового документа. Все просто и банально.

Значит, чтобы закодировать любой нужный нам символ (например, из национального алфавита), должно быть выполнено два условия — векторная форма этого знака должна быть в используемом шрифте и этот символ можно было бы закодировать в расширенных кодировках ASCII в один байт. Поэтому таких вариантов существует целая куча. Только лишь для кодирования символов русского языка существует несколько разновидностей расширенной Аски.

Например, изначально появилась CP866, в которой была возможность использовать символы русского алфавита и она являлась расширенной версией ASCII.

Т.е. ее верхняя часть полностью совпадала с базовой версией Аски (128 символов латиницы, цифр и еще всякой лабуды), которая представлена на приведенном чуть выше скриншоте, а вот уже нижняя часть таблицы с кодировкой CP866 имела указанный на скриншоте чуть ниже вид и позволяла закодировать еще 128 знаков (русские буквы и всякая там псевдографика):

Русская кодировка CP866

Видите, в правом столбце цифры начинаются с 8, т.к. числа с 0 до 7 относятся к базовой части ASCII (см. первый скриншот). Т.о. русская буква «М» в CP866 будет иметь код 9С (она находится на пересечении соответствующих строки с 9 и столбца с цифрой С в шестнадцатеричной системе счисления), который можно записать в одном байте информации, и при наличии подходящего шрифта с русскими символами эта буква без проблем отобразится в тексте.

Откуда взялось такое количество псевдографики в CP866? Тут все дело в том, что эта кодировка для русского текста разрабатывалась еще в те мохнатые года, когда не было такого распространения графических операционных систем как сейчас. А в Досе, и подобных ей текстовых операционках, псевдографика позволяла хоть как-то разнообразить оформление текстов и поэтому ею изобилует CP866 и все другие ее ровесницы из разряда расширенных версий Аски.

CP866 распространяла компания IBM, но кроме этого для символов русского языка были разработаны еще ряд кодировок, например, к этому же типу (расширенных ASCII) можно отнести KOI8-R:

Пример кодировки русского языка KOI8-R

Принцип ее работы остался тот же самый, что и у описанной чуть ранее CP866 — каждый символ текста кодируется одним единственным байтом. На скриншоте показана вторая половина таблицы KOI8-R, т.к. первая половина полностью соответствует базовой Аски, которая показана на первом скриншоте в этой статье.

Среди особенностей кодировки KOI8-R можно отметить то, что русские буквы в ее таблице идут не в алфавитном порядке, как это, например, сделали в CP866.

Если посмотрите на самый первый скриншот (базовой части, которая входит во все расширенные кодировки), то заметите, что в KOI8-R русские буквы расположены в тех же ячейках таблицы, что и созвучные им буквы латинского алфавита из первой части таблицы. Это было сделано для удобства перехода с русских символов на латинские путем отбрасывания всего одного бита (два в седьмой степени или 128).

Windows 1251 — современная версия ASCII и почему вылезают кракозябры

Дальнейшее развитие кодировок текста было связано с тем, что набирали популярность графические операционные системы и необходимость использования псевдографики в них со временем пропала. В результате возникла целая группа, которая по своей сути по-прежнему являлись расширенными версиями Аски (один символ текста кодируется всего одним байтом информации), но уже без использования символов псевдографики.

Они относились к так называемым ANSI кодировкам, которые были разработаны американским институтом стандартизации. В просторечии еще использовалось название кириллица для варианта с поддержкой русского языка. Примером такой может служить Windows 1251.

Она выгодно отличалась от используемых ранее CP866 и KOI8-R тем, что место символов псевдографики в ней заняли недостающие символы русской типографики (окромя знака ударения), а также символы, используемые в близких к русскому славянских языках (украинскому, белорусскому и т.д.):

Windows 1251

Из-за такого обилия кодировок русского языка, у производителей шрифтов и производителей программного обеспечения постоянно возникала головная боль, а у нас с вам, уважаемые читатели, зачастую вылезали те самые пресловутые кракозябры, когда происходила путаница с используемой в тексте версией.

Очень часто они вылезали при отправке и получении сообщений по электронной почте, что повлекло за собой создание очень сложных перекодировочных таблиц, которые, собственно, решить эту проблему в корне не смогли, и зачастую пользователи для переписки использовали транслит латинских букв, чтобы избежать пресловутых кракозябров при использовании русских кодировок подобных CP866, KOI8-R или Windows 1251.

По сути, кракозябры, вылазящие вместо русского текста, были результатом некорректного использования кодировки данного языка, которая не соответствовала той, в которой было закодировано текстовое сообщение изначально.

Допустим, если символы, закодированные с помощью CP866, попробовать отобразить, используя кодовую таблицу Windows 1251, то эти самые кракозябры (бессмысленный набор знаков) и вылезут, полностью заменив собой текст сообщения.

Пример кракозябров

Аналогичная ситуация очень часто возникает при создании сайтов на WordPress и Joomla, форумов или блогов, когда текст с русскими символами по ошибке сохраняется не в той кодировке, которая используется на сайте по умолчанию, или же не в том текстовом редакторе, который добавляет в код отсебятину не видимую невооруженным глазом.

В конце концов такая ситуация с множеством кодировок и постоянно вылезающими кракозябрами многим надоела, появились предпосылки к созданию новой универсальной вариации, которая бы заменила собой все существующие и решила бы, наконец, на корню проблему с появлением не читаемых текстов. Кроме этого существовала проблема языков подобных китайскому, где символов языка было гораздо больше, чем 256.

Юникод (Unicode) — универсальные кодировки UTF 8, 16 и 32

Эти тысячи знаков языковой группы юго-восточной Азии никак невозможно было описать в одном байте информации, который выделялся для кодирования символов в расширенных версиях ASCII. В результате был создан консорциум под названием Юникод (Unicode — Unicode Consortium) при сотрудничестве многих лидеров IT индустрии (те, кто производит софт, кто кодирует железо, кто создает шрифты), которые были заинтересованы в появлении универсальной кодировки текста.

Первой вариацией, вышедшей под эгидой консорциума Юникод, была UTF 32. Цифра в названии кодировки означает количество бит, которое используется для кодирования одного символа. 32 бита составляют 4 байта информации, которые понадобятся для кодирования одного единственного знака в новой универсальной кодировке UTF.

В результате чего, один и тот же файл с текстом, закодированный в расширенной версии ASCII и в UTF-32, в последнем случае будет иметь размер (весить) в четыре раза больше. Это плохо, но зато теперь у нас появилась возможность закодировать с помощью ЮТФ число знаков, равное двум в тридцать второй степени (миллиарды символов, которые покроют любое реально необходимое значение с колоссальным запасом).

Но многим странам с языками европейской группы такое огромное количество знаков использовать в кодировке вовсе и не было необходимости, однако при задействовании UTF-32 они ни за что ни про что получали четырехкратное увеличение веса текстовых документов, а в результате и увеличение объема интернет трафика и объема хранимых данных. Это много, и такое расточительство себе никто не мог позволить.

В результате развития Юникода появилась UTF-16, которая получилась настолько удачной, что была принята по умолчанию как базовое пространство для всех символов, которые у нас используются. Она использует два байта для кодирования одного знака. Давайте посмотрим, как это дело выглядит.

В операционной системе Windows вы можете пройти по пути «Пуск» — «Программы» — «Стандартные» — «Служебные» — «Таблица символов». В результате откроется таблица с векторными формами всех установленных у вас в системе шрифтов. Если вы выберете в «Дополнительных параметрах» набор знаков Юникод, то сможете увидеть для каждого шрифта в отдельности весь ассортимент входящих в него символов.

Кстати, щелкнув по любому из них, вы сможете увидеть его двухбайтовый код в формате UTF-16, состоящий из четырех шестнадцатеричных цифр:

Юникод в формате UTF-16

Сколько символов можно закодировать в UTF-16 с помощью 16 бит? 65 536 (два в степени шестнадцать), и именно это число было принято за базовое пространство в Юникоде. Помимо этого существуют способы закодировать с помощью нее и около двух миллионов знаков, но ограничились расширенным пространством в миллион символов текста.

Но даже эта удачная версия кодировки Юникода не принесла особого удовлетворения тем, кто писал, допустим, программы только на английском языке, ибо у них, после перехода от расширенной версии ASCII к UTF-16, вес документов увеличивался в два раза (один байт на один символ в Аски и два байта на тот же самый символ в ЮТФ-16).

Вот именно для удовлетворения всех и вся в консорциуме Unicode было решено придумать кодировку переменной длины. Ее назвали UTF-8. Несмотря на восьмерку в названии, она действительно имеет переменную длину, т.е. каждый символ текста может быть закодирован в последовательность длиной от одного до шести байт.

На практике же в UTF-8 используется только диапазон от одного до четырех байт, потому что за четырьмя байтами кода ничего уже даже теоретически не возможно представить. Все латинские знаки в ней кодируются в один байт, так же как и в старой доброй ASCII.

Что примечательно, в случае кодирования только латиницы, даже те программы, которые не понимают Юникод, все равно прочитают то, что закодировано в ЮТФ-8. Т.е. базовая часть Аски просто перешла в это детище консорциума Unicode.

Кириллические же знаки в UTF-8 кодируются в два байта, а, например, грузинские — в три байта. Консорциум Юникод после создания UTF 16 и 8 решил основную проблему — теперь у нас в шрифтах существует единое кодовое пространство. И теперь их производителям остается только исходя из своих сил и возможностей заполнять его векторными формами символов текста. Сейчас в наборы даже эмодзи смайлики добавляют.

В приведенной чуть выше «Таблице символов» видно, что разные шрифты поддерживают разное количество знаков. Некоторые насыщенные символами Юникода шрифты могут весить очень прилично. Но зато теперь они отличаются не тем, что они созданы для разных кодировок, а тем, что производитель шрифта заполнил или не заполнил единое кодовое пространство теми или иными векторными формами до конца.

Кракозябры вместо русских букв — как исправить

Давайте теперь посмотрим, как появляются вместо текста кракозябры или, другими словами, как выбирается правильная кодировка для русского текста. Собственно, она задается в той программе, в которой вы создаете или редактируете этот самый текст, или же код с использованием текстовых фрагментов.

Для редактирования и создания текстовых файлов лично я использую очень хороший, на мой взгляд, Html и PHP редактор Notepad++. Впрочем, он может подсвечивать синтаксис еще доброй сотни языков программирования и разметки, а также имеет возможность расширения с помощью плагинов. Читайте подробный обзор этой замечательной программы по приведенной ссылке.

В верхнем меню Notepad++ есть пункт «Кодировки», где у вас будет возможность преобразовать уже имеющийся вариант в тот, который используется на вашем сайте по умолчанию:

Как исправить кракозябры в кодировке utf-8

В случае сайта на Joomla 1.5 и выше, а также в случае блога на WordPress следует во избежании появления кракозябров выбирать вариант UTF 8 без BOM. А что такое приставка BOM?

Дело в том, что когда разрабатывали кодировку ЮТФ-16, зачем-то решили прикрутить к ней такую вещь, как возможность записывать код символа, как в прямой последовательности (например, 0A15), так и в обратной (150A). А для того, чтобы программы понимали, в какой именно последовательности читать коды, и был придуман BOM (Byte Order Mark или, другими словами, сигнатура), которая выражалась в добавлении трех дополнительных байтов в самое начало документов.

В кодировке UTF-8 никаких BOM предусмотрено в консорциуме Юникод не было и поэтому добавление сигнатуры (этих самых пресловутых дополнительных трех байтов в начало документа) некоторым программам просто-напросто мешает читать код. Поэтому мы всегда при сохранении файлов в ЮТФ должны выбирать вариант без BOM (без сигнатуры). Таким образом, вы заранее обезопасите себя от вылезания кракозябров.

Что примечательно, некоторые программы в Windows не умеют этого делать (не умеют сохранять текст в ЮТФ-8 без BOM), например, все тот же пресловутый Блокнот Windows. Он сохраняет документ в UTF-8, но все равно добавляет в его начало сигнатуру (три дополнительных байта). Причем эти байты будут всегда одни и те же — читать код в прямой последовательности. Но на серверах из-за этой мелочи может возникнуть проблема — вылезут кракозябры.

Поэтому ни в коем случае не пользуйтесь обычным блокнотом Windows для редактирования документов вашего сайта, если не хотите появления кракозябров. Лучшим и наиболее простым вариантом я считаю уже упомянутый редактор Notepad++, который практически не имеет недостатков и состоит из одних лишь достоинств.

В Notepad ++ при выборе кодировки у вас будет возможность преобразовать текст в кодировку UCS-2, которая по своей сути очень близка к стандарту Юникод. Также в Нотепаде можно будет закодировать текст в ANSI, т.е. применительно к русскому языку это будет уже описанная нами чуть выше Windows 1251. Откуда берется эта информация?

Она прописана в реестре вашей операционной системы Windows — какую кодировку выбирать в случае ANSI, какую выбирать в случае OEM (для русского языка это будет CP866). Если вы установите на своем компьютере другой язык по умолчанию, то и эти кодировки будут заменены на аналогичные из разряда ANSI или OEM для того самого языка.

После того, как вы в Notepad++ сохраните документ в нужной вам кодировке или же откроете документ с сайта для редактирования, то в правом нижнем углу редактора сможете увидеть ее название:

Как узнать тип кодировки текстового документа

Чтобы избежать кракозябров, кроме описанных выше действий, будет полезным прописать в его шапке исходного кода всех страниц сайта информацию об этой самой кодировке, чтобы на сервере или локальном хосте не возникло путаницы.

Вообще, во всех языках гипертекстовой разметки кроме Html используется специальное объявление xml, в котором указывается кодировка текста.

<?xml version="1.0" encoding="windows-1251"?>

Прежде, чем начать разбирать код, браузер узнает, какая версия используется и как именно нужно интерпретировать коды символов этого языка. Но что примечательно, в случае, если вы сохраняете документ в принятом по умолчанию юникоде, то это объявление xml можно будет опустить (кодировка будет считаться UTF-8, если нет BOM или ЮТФ-16, если BOM есть).

В случае же документа языка Html для указания кодировки используется элемент Meta, который прописывается между открывающим и закрывающим тегом Head:

<head>
...
<meta charset="utf-8">
...
</head>

Эта запись довольно сильно отличается от принятой в стандарте в Html 4.01, но полностью соответствует новому внедряемому потихоньку стандарту Html 5, и она будет стопроцентно правильно понята любыми используемыми на текущий момент браузерами.

По идее, элемент Meta с указание кодировки Html документа лучше будет ставить как можно выше в шапке документа, чтобы на момент встречи в тексте первого знака не из базовой ANSI (которые правильно прочитаются всегда и в любой вариации) браузер уже должен иметь информацию о том, как интерпретировать коды этих символов.

Отличие utf-8 и windows 1251. Рассмотрим, чем отличаются две кодировки «utf-8 и windows 1251» в теории и на практике. И как победить некоторые проблемы для кириллицы в utf-8!?

  • О кодировках utf-8 и windows 1251

    Самое главное. что нас интересует, как и меня — в чем же отличие кодировок utf-8 и windows 1251. И отличается только кириллица!

    Чем отличаются utf-8 и windows 1251

    UTF-8 — это много-байтовая кодировка, а Windows- 1251 однобайтовая. И более того, отличие только в кириллице.

    Количество байтов кириллицы в UTF-8 будет в 2 раза больше, чем 1). латиницы в UTF-8 и 2). латиницы + кириллицы в Windows- 1251 → пример

    Главное отличие кодировок – это используемый набор символов. В UTF-8 гораздо больше количество символов возможно представить, чем в Windows- 1251. Кодировка Windows- 1251 однобайтовая, т.е. представить в ней можно только 255 символов. Для кириллицы, впрочем, этого вполне достаточно, именно поэтому однобайтовые кодировки до сих пор так массово применяются.

    Что такое кодировка windows 1251

    Windows-1251 – набор символов и кодировка, являющаяся стандартной 8-битной кодировкой для всех русских версий Microsoft Windows. Пользуется довольно большой популярностью. Windows-1251 выгодно отличается от других 8‑битных кириллических кодировок (таких как CP866, KOI8-R и ISO 8859-5) наличием практически всех символов, использующихся в русской типографике для обычного текста; она также содержит все символы для близких к русскому языку языков: украинского, белорусского, сербского и болгарского.

    Что такое кодировка UTF-8

    UTF-8 – в настоящее время распространённая кодировка, реализующая представление Юникода, совместимое с 8-битным кодированием текста. Нашла широкое применение в операционных системах и веб-пространстве. Текст, состоящий только из символов Юникода с номерами меньше 128, при записи в UTF-8 превращается в обычный текст ASCII. Остальные символы Юникода изображаются последовательностями длиной от 2 до 6 байт.

    Символ в кодировке UTF-8 может кодироваться аж 6 байтами (пока используется только 4 и больше не планируется). Для русского языка, например, символ занимает 2 байта. Все символы, которые есть в таблице символов – поддерживаются этой кодировкой. К примеру, если вам нужен знак копирайта (©), то вам не нужно искать особый шрифт или же изображать символов в графическом формате.

  • Пример вывода текста в кодировках utf-8 латиницы

    Когда и если вы прочитали теорию о разнице кодировок utf-8 и windows 1251 — это уже победа! wall
    смайлы

    А если вы еще и поняли о чем идет речь, то вы вообще Эйнштейн! good
    смайлы, то и смысла особого вам читать дальше нет.

    А для всех остальных продолжим…

    Чем отличается текст в кодировках utf-8 и windows 1251

    Теория — это конечно классно и круто, но как обстоит дело на практике!

    Как показать отличие двух кодировок!?

    У нас на сайте основная кодировка utf-8, и мы не напрягаясь можем посмотреть, что творится с текстом в этой кодировке!

    Нам понадобится какой-то текст на латинице:

    И… нам нужно такое слово, чтобы имело одинаковое количество букв в слове, ну пусть это будет моё имя…

    Пусть это будет слово — «Marat!»

    Далее нам потребуется функция var_dump.

    И выведем прямо здесь вот такую конструкцию :

    var_dump(‘Marat’);

    Результат:

    string(5) «Marat»

    Что мы здесь можем прочитать!?

    Что это строка, и что в ней 5 элементов.

  • Пример вывода текста в кодировках utf-8 кириллицы

    Теперь, проделаем тоже самое со строкой на кириллице:

    У нас все таже кодировка utf-8.

    Но теперь нам понадобится текст на кириллице:

    Пусть это будет слово — «Марат!»

    Опять var_dump.

    И выведем прямо здесь вот такую конструкцию :

    var_dump(‘Марат’);

    Результат:

    string(10) «Марат»

    И что мы здесь видим!?

    Что количество элементов в строке 10… Если вы читали теорию внимательно, то вот вам показатель того, что одна буква состоит из двух символов, а латиницы это не касается…!

    Поэтому, и возникают проблемы с текстом в кодировке utf-8 кириллицы, множество функций тупо не работают.

    Как пример…как-то я задолбался со strtolower в utf-8 для кириллицы, что решил написать собственную функцию strtolower, чтобы каждый раз не городить этажерку из нескольких функций…

  • Пример отличия в кодировках utf-8 и windows 1251

    Если вы поленились прочитать два верхних пункта, то ещё раз выведем результаты вывода текста на латинице и на кириллице с одним количеством букв.

    Результат вывода var_dump(‘Marat’);:
    string(5) «Marat»

    Результат var_dump(‘Марат’);:
    string(10) «Марат»

    Что делать, если функция для кириллицы на utf-8 не работают?

    Поскольку я давно занимаюсь сайтами, то могу сказать, что на самом деле таких случаев не так много, когда нужна какая-то специальная функция для обработки кириллицы на utf-8.

    Но если уж она возникала, то есть несколько вариантов решения!

    Это функции с приставкой «mb_», естественно надо проверять, работает ли она у вас на хостинге.

    Второй вариант, это написать собственную функцию, которая будет работать и для латиницы и кириллицы? как это я показал на функции strtolower

    И третий вариант перекодировать строку из utf-8 в windows 1251

    Рассмотрим, первый попавшийся на ум пример…

    Пусть это будет функция str_split и её аналог mb_str_split

    print_r (str_split(‘Марат’)); выдаст :

    Array

    (

    [0] => �

    [1] => �

    [2] => �

    [3] => �

    [4] => �

    [5] => �

    [6] => �

    [7] => �

    [8] => �

    [9] => �

    )

    print_r (mb_str_split(‘Марат’)); выдаст :

    Что делать, если функция для кириллицы на utf-8 не работают?

    Как видим… полный отстой…

    Мы далее разбирались с этим здесь.

  • Как перекодировать строку из utf-8 в windows 1251

    Итак… есть третий вариант, борьбы с квадратиками(непонимание кодировки) — перекодировать строку из utf-8 в windows 1251:

    iconv(«UTF-8», «windows-1251», $text)

    После того, как вы выполнили все намеченные действия с текстом, возвращаем его в исходную кодировку :

    iconv(«windows-1251», «UTF-8», $text)

    Рассмотрим пример перекодировки текста из UTF-8 в windows-1251 и обратно

    Мы использовали var_dump, и он посчитал не правильно, поскольку просто так, на страницу вывести данные с помощью var_dump нельзя, мы использовали вот такой костыль :

    ob_start();

    var_dump( ‘Марат’ );

    echo ob_get_clean();

    Теперь попробуем перекодировать строку прямо внутри :

    ob_start();

    var_dump(iconv(«UTF-8», «windows-1251», ‘Марат’)) ;

    echo ob_get_clean() ;

    Результат подсчета знаков верный, но видим что слово не было перекодировано обратно :

    string(5) «�����»

    Исправим:

    ob_start();

    var_dump(iconv(«UTF-8», «windows-1251», ‘Марат’)) ;

    echo iconv(«windows-1251», «UTF-8», ob_get_clean());

    Результат :

    string(5) «Марат»

    Итак… вы видели процесс кодировки и перекодировки текста из utf-8 в windows 1251, а потом обратно!


    Вы наверное подумали :

    Что за дичь здесь происходит!? Это не дичь! Когда ты внутри, а не снаружи, то все кажется не простым, а очень простым.

    И чем больше ты в теме, это просто, как есть, пить, дышать… просто не задумываешься…

    Я не говорю, что всегда так, иногда бывает очень трудно какаю-то задачку решить… shootself2
    смайлы

  • Что лучше для кириллицы utf-8 или…

    Интересный поисковый запрос — «Что лучше для кириллицы utf-8 или…«…

    Дело в том, что я выбрал кодировку «utf-8» уже… 14 лет(число динамическое) назад… и… уже сейчас трудно вспомнить, почему именно её… но точно вам могу заявить, что когда-то пользовался «windows-1251″… и у неё были какие-то заморочки, в виде неадекватного вывода информации, что, я волей неволей перешел на «utf-8»

    Какие минусы у utf-8?

    Одна из самых главных проблем «utf-8» — это многобайтовость…

    Да! Это несколько неудобно в самом начале, но для всякой функции, которая не хочет работать с кириллицей, существуют замены.

    В процессе создания сайта у вас может возникнуть несколько проблем, которые вы решите и «тупо» забудете об этом…

    Задумывался ли я о переходе с кодировки utf-8 на другую?

    Смысл задумываться о переходе с кодировки utf-8 на другую, если всё работает так, как нужно!

    Кодировка (или кодирование) – это процедура преобразования данных и сигналов из формы представления, удобной для восприятия человеком, в форму, которую распознает электронное устройство. Прием, позволяющий подготовить информацию для обработки, передачи, а также дальнейшего хранения.

    Получаемые данные будут обрабатываться в виде логических единиц и нулей – в двоичной системе. Если числовые символы можно перевести в такую форму представления без проблем, то с кириллицей и другими буквами ситуация обстоит иначе. Буквы не поддерживают перевод в двоичный код. Вместо этого записи сначала преобразовываются в числа по специальной таблице символов. Далее компьютер считывает полученные данные и выдает результат.

    В истории сложилось так, что были созданы несколько таблиц символов. Связано это с большим количеством национальных алфавитов, а также разными позициями относительно их написания.

    Статья расскажет о существующих кодировках, а также поможет понять, как выразить символы кириллицы в UTF-8 и UTF-16.

    Виды кодировок

    Кодировать символы можно разными способами. Ситуация напрямую зависит от того, какая кодировка используется в системе. Существуют различные ее виды. Основные:

    • ASCII;
    • CP866;
    • KOI8-R;
    • Windows 251;
    • Unicode.

    Чаще всего встречаются первая и последняя кодировки. Не все они распознают буквы русского алфавита. Далее каждый вариант будет рассмотрен более подробно. А еще предстоит выяснить, что делать, если при попытке закодировать кириллицу на экране появляются непонятные записи.

    ASCII – базовая кодировка

    ASCII – American Standard Code for Information Interchange. В русском языке произносится как «Аски». Базовая кодировка для работы устройств. Первые 128 ее символов являются наиболее используемыми. Они включают в себя:

    • латинские буквы;
    • цифры (арабские);
    • служебные компоненты;
    • знаки препинания.

    Для кодировки используется один байт. Это привело к тому, что у ASCII появились расширенные версии. Изначально данные таблицы не предоставляли возможность работы с кириллицей и русскими символами. Вместо них на экране появлялись непонятные записи – «кракозябры».


    Выше представлены стандартные таблицы ASCII. В них русского алфавита нет – он не предусмотрен действующими правилами.

    Расширенные ASCII

    ASCII положила начало развития актуальных современных таблиц кодирования информации. Изначально она содержала 128 составляющих, но в расширенной версии их стало 256. Это дало возможность добавления новых алфавитов для корректного распознавания информации и ее дальнейшего отображения на дисплее устройства.

    Первая расширенная версия ASCII – это CP866. В ней реализована первая таблица кодировки русских букв. Верхняя часть CP866 полностью совпадает с базовым «Аски», а нижняя позволяет закодировать кириллицу и некоторые символы, которых нет на клавиатуре.

    Выше расположена кодовая таблица CP866. Она распространялась компанией IBM и использовалась преимущественно в DOS-системах.

    Кириллица с момента образования CP866 стала активно использоваться к компьютерной технике. Это привело к созданию совершенно новых кодировок с русскими символами. Пример – KOI8-R.

    Здесь каждый символ тоже кодируется одним байтом. Первая часть соответствует классической ASCII. Во второй располагаются специальные записи, которых нет на клавиатуре, а также русские буквы.

    KOI8-R отличается тем, что буквы в русского языка в ней располагаются не в алфавитном порядке. Они располагаются по принципу созвучия с латиницей. Данный прием предпринят для того, чтобы было удобнее переходить с кириллицы на латинские буквы, отбрасывая всего один бит.

    Windows 1251

    Дальнейшее развитие кодировок связано с появлением графических операционных систем. Для отображения информации на экране псевдографика стала ненужной. Так возникли группы, которые выступали в качестве расширенных версий ASCII, но являлись более совершенными. Псевдографика в них отсутствовала. Они получили название ANSI.

    Наглядный и весьма распространенный вариант такой кодировки – это Windows 1251. Он отличается от предшественников следующими особенностями:

    1. Вместо псевдографики здесь располагаются недостающие символы кириллицы и русской типографики. Знак ударения – единственное исключение. Его там нет.
    2. На замену псевдографики пришли элементы, приближенные к кириллице – буквы славянских языков.
    3. Первые 32 элемента отведены под операции, перевод строки и пробел.
    4. До 127 элемента расположены интернациональные компоненты, латинский алфавит, знаки препинания и математических действий, цифры.
    5. Оставшееся «пространство» выделено под национальные элементы. Именно они отображают различные мировые алфавиты. 

    Кодовая таблица, представленная выше – часть Windows 1251, отведенная под кириллицу и иные элементы. 

    Unicode

    Unicode – кодировка, которая пользуется наибольшим спросом в современных компьютерных устройствах. Этот стандарт включает в себя почти все знаки существующих письменных языков. Он преобладает в Интернете. Был создан в 1991 году.

    Unicode является многоязычным стандартом, базирующимся на ASCII. Он включает не только кириллицу, но и азиатские иероглифы. Выступает в качестве универсальной кодировки. Включает в себя несколько стандартов.

    UTF-32

    Первая вариация Unicode. Для кодирования одного элемента здесь используются 32 бита или 4 байта. Данная особенность приводит к тому, что закодированный кириллический символ в UTF-32 будет иметь вес в 4 раза больше, чем в ASCII. Несмотря на соответствующий недостаток, система стала предлагать закодировать знаки в количестве 232.

    Все символы в UTF-32 непосредственно индексируемы. Найти тот или иной знак по номеру его позиции в файле удается очень быстро. Это привело к быстрой обработке операций по замене символьных данных.

    UTF-16

    UTF-16 – новый, более совершенный стандарт Unicode. После появления стала выступать базовым пространством для всех используемых печатных элементов. Кириллическая таблица в ней тоже есть.

    Коды символов в UTF-16 содержатся в 16-ричной системе счислений. Увидеть их можно, если перейти в раздел Windows «Таблица символов». Она располагается в меню «Пуск»–«Программы»–«Стандартные»–«Служебные».

    При помощи UTF-16 можно закодировать 65 536 элементов. Это число стало базовым для Unicode. Расширенное пространство включает в себя миллион дополнительных символьных записей.

    При переходе с ASCII на UTF-16 размер исходного кода документа увеличивается уже не в 4, а в 2 раза. Связано это с использованием 2 байтов для кодирования одного и того же символа или шестнадцать бит.

    UTF-8

    Со временем был разработан стандарт UTF-8. В нем тоже есть кириллическая кодовая таблица. Носит название переменной длины. Несмотря на то, что в названии стандарта стоит 8, она действительно меняется. Каждый элемент может получить код длиной от 1 до 6 байт включительно. Практически стандартом используются компоненты до 4 байт. Латинские буквы здесь содержатся в одном байте, как и в ASCII.

    В UTF-8 русские символы занимают по 2 байта, а грузинские – по 3. Текущий стандарт предусматривает возможность печати не только букв, но и смайликов. С UTF-8 хорошо работают даже системы, которые не ориентированы на Unicode. Связано это с тем, что базовая часть ASCII перешла в новый стандарт Юникода.

    Блоки кириллицы

    Unicode, начиная с версии 9.0, для кириллицы отвел пять различных блоков:

    Как называется Диапазон кодов типа hex Версия Unicode
    Cyrillic Стандартная кириллица От 0400 до 04FF 1.1
    Cyrillic Supplement Дополнения От 0500 до 052F 3.2
    Cyrillic Extended-A Расширенная кириллица–А От 2DE0 до 2DFF 5.1
    Extended-B Кириллица расширенного типа–B От A640 до A69F
    Extended-C Кириллица расширенная–C От 1C80 до 1C8F 9.0

    Эти 4 раздела содержатся в кодовом пространстве Unicode 448 позиций. Из них 22 не определены.

    Все символы кириллицы можно разбить на несколько групп:

    • славянские алфавиты;
    • исторические буквы и старославянский (церковный славянский) алфавит;
    • дополнительные буквы для различных языков, использующих кириллицу;
    • церковнославянские буквотипы;
    • дополнительные буквы и символы для церковнославянского языка;
    • элементы для старой орфографии Абхазии;
    • старые формы представления кириллицы.

    Несмотря на относительное совершенство Unicode, при использовании кодировок кириллицы в UTF-8 и других возникают некоторые проблемы. Пример – неоднозначность относительно кодирования некоторых букв. Для того, чтобы привести текст к единому стилю и корректному отображению, приходится определять каждым конкретным стандартом форму нормализации информации.

    Непонятные символы на экране – исправление

    Любая страница данных может быть закодирована не только в ASCII, но и в Unicode. Главное правильно выбрать кодировку для русского текста. Если на экране вместо нормальных текстовых данных отображаются «кракозябры» (или непонятные надписи), значит возникла проблема перекодирования.

    Для редактирования и создания новых текстовых документов можно использовать различные приложения, поддерживающие работу не только с Unicode. Тогда вероятность возникновения ошибок отображения информации будет сведена к минимуму. Пример – Notepad++. Он умеет подсвечивать синтаксис сотен языков программирования и разметки, что станет особо полезным при программировании проектов.

    Чтобы страница, содержащая текст, была приведена от одного стандарта к другому, потребуется:

    1. Выделить текст в Notepad++.
    2. Нажать на кнопку «Кодировка» на верхней панели инструментов.
    3. Выбрать подходящий вариант. Пример – «Преобразовать в UTF-8».

    Желательно выбирать вариант кодировки UTF-8 без BOM для русского языка, отображаемого на странице в документе или на сайте. Этот прием поможет сохранить данные без сигнатуры (добавления лишних трех байтов в самое начало документов).

    Десятичная система

    При преобразовании информации из одной системы счисления (и кодировки) в другую, могут потребоваться ее десятичные значения. Такой вариант используется в ASCII и UTF-32. При помощи него можно перевести символ в удобную для восприятия компьютером форму. А еще – выполнить дальнейшую перекодировку в те или иные системы счисления.

    Десятичная система помогает в Windows вводить различные символы при помощи сочетания с Alt. Для перевода кириллицы в UTF-8 format поможет таблица ниже.



    В Unicode transformation символьных записей производится при помощи целых чисел без знаков. Необходимые преобразования помогут выполнить специализированные сайты-конвертеры. Самостоятельно такие операции практически не используются. Таблицы соответствия и конвертеры сильно облегчают эту задачу.

    Как освоить кодирование информации

    Русская кодировка может некорректно отображаться в некоторых приложениях, а также операционных системах. Связано это с тем, что не все стандарты кодирования данных имеют коды для соответствующих элементов.

    Чтобы лучше разобраться в программировании, а также грамотном использовании стандартов кодирования и переводе текста из одной системы в другую, рекомендуется закончить дистанционные онлайн курсы. Они предлагают:

    • постоянное кураторство;
    • домашние задания и интересные практические задачи;
    • возможность освоить инновационные профессии и направления в мире IT в сжатые сроки;
    • помощь в формировании портфолио;
    • разнообразие направлений – есть предложения как для новичков, так и для взрослых.

    По завершении курса обучения ученик получит сертификат в электронной форме, подтверждающий приобретенный спектр знаний и умений.

    Хотите стать профессионалом в сфере обработки данных? Добро пожаловать на курсы в Otus:

    • Промышленный ML на больших данных
    • Data Warehouse Analyst
    • Data Engineer

    Таблица кодов кириллицы в Unicode, UTF-8 и Windows-1251

    Во-первых, напомню, что Юникод — не кодировка, а стандарт кодирования,
    кодировки — это UTF-8, UTF-16 и т.д., но, в силу инерции, разработчики и пользователи часто
    говорят о «кодировке Юникод», имея в виду распространённую именно в их деревне форму представления символов :)

    Во-вторых, на самом деле кодирование там довольно замудрённое, возьмём, скажем русскую заглавную «Ж».

    Представляемые в Юникоде символы кодируются целыми числами без знака, их можно называть «кодами символов Unicode».

    Так, для буквы «Ж» Unicode = 104610 или 041616 или 10000 0101102. Unicode в двоичном виде разбивается на две части: пять левых бит и шесть правых. Левая часть в старших разрядах дополняется до байта признаком 110 двухбайтного кода UTF-8, получаем 11010000. К правой части в старших разрядах приписываются два бита 10 признака продолжения многобайтного кода, получаем 10010110. Окончательно код буквы «Ж» в UTF-8 будет иметь вид
    11010000 100101102 или D0 9616.

    Именно последний код мы увидим в любом 16-ричном вьюере файла, например, создав в текстовом редакторе файл со словом «Жора» и сохранив его в UTF-8 (только не из Блокнотика Windows, который добавит в начало файла 3-байтовую метку BOM):

    просмотр файла в 16-ричном виде из Far Manager

    просмотр файла в 16-ричном виде из Far Manager

    То есть, каждая буква кодируется как бы дважды, сначала в 11-битный Unicode, затем в 16-битный UTF-8.

    Ниже приведена таблица кодов кириллицы в Unicode, UTF-8 и однобайтовой кодировке Windows-1251.

    Символ Unicode UTF-8 Windows-1251
    16-ричн. 10-тичн. 16-ричн. 10-тичн.
    А 0410

    1040 D090 208 144 192
    Б 0411 1041 D091 208 145 193
    В 0412 1042 D092 208 146 194
    Г 0413 1043 D093 208 147 195
    Д 0414 1044 D094 208 148 196
    Е 0415 1045 D095 208 149 197
    Ж 0416 1046 D096 208 150 198
    З 0417 1047 D097 208 151 199
    И 0418 1048 D098 208 152 200
    Й 0419 1049 D099 208 153 201
    К 041A 1050 D09A 208 154 202
    Л 041B 1051 D09B 208 155 203
    М 041C 1052 D09C 208 156 204
    Н 041D 1053 D09D 208 157 205
    О 041E 1054 D09E 208 158 206
    П 041F 1055 D09F 208 159 207
    Р 0420 1056 D0A0 208 160 208
    С 0421 1057 D0A1 208 161 209
    Т 0422 1058 D0A2 208 162 210
    У 0423 1059 D0A3 208 163 211
    Ф 0424 1060 D0A4 208 164 212
    Х 0425 1061 D0A5 208 165 213
    Ц 0426 1062 D0A6 208 166 214
    Ч 0427 1063 D0A7 208 167 215
    Ш 0428 1064 D0A8 208 168 216
    Щ 0429 1065 D0A9 208 169 217
    Ъ 042A 1066 D0AA 208 170 218
    Ы 042B 1067 D0AB 208 171 219
    Ь 042C 1068 D0AC 208 172 220
    Э 042D 1069 D0AD 208 173 221
    Ю 042E 1070 D0AE 208 174 222
    Я 042F 1071 D0AF 208 175 223
    а 0430 1072 D0B0 208 176 224
    б 0431 1073 D0B1 208 177 225
    в 0432 1074 D0B2 208 178 226
    г 0433 1075 D0B3 208 179 227
    д 0434 1076 D0B4 208 180 228
    е 0435 1077 D0B5 208 181 229
    ж 0436 1078 D0B6 208 182 230
    з 0437 1079 D0B7 208 183 231
    и 0438 1080 D0B8 208 184 232
    й 0439 1081 D0B9 208 185 233
    к 043A 1082 D0BA 208 186 234
    л 043B 1083 D0BB 208 187 235
    м 043C 1084 D0BC 208 188 236
    н 043D 1085 D0BD 208 189 237
    о 043E 1086 D0BE 208 190 238
    п 043F 1087 D0BF 208 191 239
    р 0440 1088 D180 209 128 240
    с 0441 1089 D181 209 129 241
    т 0442 1090 D182 209 130 242
    у 0443 1091 D183 209 131 243
    ф 0444 1092 D184 209 132 244
    х 0445 1093 D185 209 133 245
    ц 0446 1094 D186 209 134 246
    ч 0447 1095 D187 209 135 247
    ш 0448 1096 D188 209 136 248
    щ 0449 1097 D189 209 137 249
    ъ 044A 1098 D18A 209 138 250
    ы 044B 1099 D18B 209 139 251
    ь 044C 1100 D18C 209 140 252
    э 044D 1101 D18D 209 141 253
    ю 044E 1102 D18E 209 142 254
    я 044F 1103 D18F 209 143 255
    Символы вне общего правила
    Ё 0401 1025 D081 208 129 168
    ё 0451 1105 D191 209 145 184

    23.09.2018, 12:37 [76894 просмотра]


    Понравилась статья? Поделить с друзьями:
  • Какие обновления windows 10 надо удалить
  • Какие есть операционные системы для компьютера кроме windows
  • Какие кодеки установлены в системе windows 7
  • Какие обновления windows 10 можно удалить для ускорения
  • Какие есть операционные системы альтернативные windows