Кодировка windows 1251 в двоичном коде

Данная статья имеет цель собрать воедино и разобрать принципы и механизм работы кодировок текста, подробно этот механизм разобрать и объяснить. Полезна она будет...

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

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

О чем будет под катом: принцип работы одно байтовых кодировок (ASCII, Windows-1251 и т.д.), предпосылки появления Unicode, что такое Unicode, Unicode-кодировки UTF-8, UTF-16, их отличия, принципиальные особенности, совместимость и несовместимость разных кодировок, принципы кодирования символов, практический разбор кодирования и декодирования.

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

Предпосылки Unicode

Начать думаю стоит с того времени когда компьютеризация еще не была так сильно развита и только набирала обороты. Тогда разработчики и стандартизаторы еще не думали, что компьютеры и интернет наберут такую огромную популярность и распространенность. Собственно тогда то и возникла потребность в кодировке текста. В каком то же виде нужно было хранить буквы в компьютере, а он (компьютер) только единицы и нули понимает. Так была разработана одно-байтовая кодировка ASCII (скорее всего она не первая кодировка, но она наиболее распространенная и показательная, по этому ее будем считать за эталонную). Что она из себя представляет? Каждый символ в этой кодировке закодирован 8-ю битами. Несложно посчитать что исходя из этого кодировка может содержать 256 символов (восемь бит, нулей или единиц 28=256).

Первые 7 бит (128 символов 27=128) в этой кодировке были отданы под символы латинского алфавита, управляющие символы (такие как переносы строк, табуляция и т.д.) и грамматические символы. Остальные отводились под национальные языки. То есть получилось что первые 128 символов всегда одинаковые, а если хочешь закодировать свой родной язык пожалуйста, используй оставшуюся емкость. Собственно так и появился огромный зоопарк национальных кодировок. И теперь сами можете представить, вот например я находясь в России беру и создаю текстовый документ, у меня по умолчанию он создается в кодировке Windows-1251 (русская кодировка использующаяся в ОС Windows) и отсылаю его кому то, например в США. Даже то что мой собеседник знает русский язык, ему не поможет, потому что открыв мой документ на своем компьютере (в редакторе с дефолтной кодировкой той же самой ASCII) он увидит не русские буквы, а кракозябры. Если быть точнее, то те места в документе которые я напишу на английском отобразятся без проблем, потому что первые 128 символов кодировок Windows-1251 и ASCII одинаковые, но вот там где я написал русский текст, если он в своем редакторе не укажет правильную кодировку будут в виде кракозябр.

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

Небольшой практикум ASCII

Возможно покажется элементарщиной, но раз уж решил объяснять все и подробно, то это надо.

Вот таблица символов ASCII:

Тут имеем 3 колонки:

  • номер символа в десятичном формате
  • номер символа в шестнадцатиричном формате
  • представление самого символа.

Итак, закодируем строку «ok» (англ.) в кодировке ASCII. Символ «o» (англ.) имеет позицию 111 в десятичном виде и 6F в шестнадцатиричном. Переведем это в двоичную систему — 01101111. Символ «k» (англ.) — позиция 107 в десятеричной и 6B в шестнадцатиричной, переводим в двоичную — 01101011. Итого строка «ok» закодированная в ASCII будет выглядеть так — 01101111 01101011. Процесс декодирования будет обратный. Берем по 8 бит, переводим их в 10-ичную кодировку, получаем номер символа, смотрим по таблице что это за символ.

Unicode

С предпосылками создания общей таблицы для всех в мире символов, разобрались. Теперь собственно, к самой таблице. Unicode — именно эта таблица и есть (это не кодировка, а именно таблица символов). Она состоит из 1 114 112 позиций. Большинство этих позиций пока не заполнены символами, так что вряд ли понадобится это пространство расширять.

Разделено это общее пространство на 17 блоков, по 65 536 символов в каждом. Каждый блок содержит свою группу символов. Нулевой блок — базовый, там собраны наиболее употребляемые символы всех современных алфавитов. Во втором блоке находятся символы вымерших языков. Есть два блока отведенные под частное использование. Большинство блоков пока не заполнены.

Итого емкость символов юникода составляет от 0 до 10FFFF (в шестнадцатиричном виде).

Записываются символы в шестнадцатиричном виде с приставкой «U+». Например первый базовый блок включает в себя символы от U+0000 до U+FFFF (от 0 до 65 535), а последний семнадцатый блок от U+100000 до U+10FFFF (от 1 048 576 до 1 114 111).

Отлично теперь вместо зоопарка национальных кодировок, у нас есть всеобъемлющая таблица, в которой зашифрованы все символы которые нам могут пригодиться. Но тут тоже есть свои недостатки. Если раньше каждый символ был закодирован одним байтом, то теперь он может быть закодирован разным количеством байтов. Например для кодирования всех символов английского алфавита по прежнему достаточно одного байта например тот же символ «o» (англ.) имеет в юникоде номер U+006F, то есть тот же самый номер как и в ASCII — 6F в шестнадцатиричной и 111 в десятеричной. А вот для кодирования символа «U+103D5» (это древнеперсидская цифра сто) — 103D5 в шестнадцатиричной и 66 517 в десятеричной, тут нам потребуется уже три байта.

Решить эту проблему уже должны юникод-кодировки, такие как UTF-8 и UTF-16. Далее речь пойдет про них.

UTF-8

UTF-8 является юникод-кодировкой переменной длинны, с помощью которой можно представить любой символ юникода.

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

Немного отступлю от темы, надо написать про совместимость ASCII и UTF

То что латинские символы и основные управляющие конструкции, такие как переносы строк, табуляции и т.д. закодированы одним байтом делает utf-кодировки совместимыми с кодировками ASCII. То есть фактически латиница и управляющие конструкции находятся на тех же самых местах как в ASCII, так и в UTF, и то что закодированы они и там и там одним байтом и обеспечивает эту совместимость.

Давайте возьмем символ «o»(англ.) из примера про ASCII выше. Помним что в таблице ASCII символов он находится на 111 позиции, в битовом виде это будет 01101111. В таблице юникода этот символ — U+006F что в битовом виде тоже будет 01101111. И теперь так, как UTF — это кодировка переменной длины, то в ней этот символ будет закодирован одним байтом. То есть представление данного символа в обеих кодировках будет одинаково. И так для всего диапазона символов от 0 до 128. То есть если ваш документ состоит из английского текста то вы не заметите разницы если откроете его и в кодировке UTF-8 и UTF-16 и ASCII (прим. в UTF-16 такие символы все равно будут закодированы двумя байтами, по этому вы не увидите разницы, если ваш редактор будет игнорировать нулевые байты), и так до момента пока вы не начнете работать с национальным алфавитом.

Сравним на практике как будет выглядеть фраза «Hello мир» в трех разных кодировках: Windows-1251 (русская кодировка), ISO-8859-1 (кодировка западно-европейских языков), UTF-8 (юникод-кодировка). Суть данного примера состоит в том что фраза написана на двух языках. Посмотрим как она будет выглядеть в разных кодировках.


В кодировке ISO-8859-1 нет таких символов «м», «и» и «р».

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

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

01001000 01100101 01101100 01101100 01101111 00100000 11101100 11101000 11110000
Отлично, вот это и есть фраза «Hello мир» в кодировке Windows-1251.

Теперь представим что вы имеете файл с текстом, но не знаете в какой кодировке этот текст. Вы предполагаете что он в кодировке ISO-8859-1 и открываете его в своем редакторе в этой кодировке. Как сказано выше с частью символов все в порядке, они есть в этой кодировке, и даже находятся на тех же местах, но вот с символами из слова «мир» все сложнее. Этих символов в этой кодировке нет, а на их местах в кодировке ISO-8859-1 находятся совершенно другие символы. А конкретно «м» — позиция 236, «и» — 232. «р» — 240. И на этих позициях в кодировке ISO-8859-1 находятся следующие символы позиция 236 — символ «ì», 232 — «è», 240 — «ð»

Значит фраза «Hello мир» закодированная в Windows-1251 и открытая в кодировке ISO-8859-1 будет выглядеть так: «Hello ìèð». Вот и получается что эти две кодировки совместимы лишь частично, и корректно перекодировать строку из одной кодировке в другую не получится, потому что там просто напросто нет таких символов.

Тут и будут необходимы юникод-кодировки, а конкретно в данном случае рассмотрим UTF-8. То что символы в ней могут быть закодированы разным количеством байтов от 1 до 4 мы уже выяснили. Теперь стоит сказать что с помощью UTF могут быть закодированы не только 256 символов, как в двух предыдущих, а вобще все символы юникода

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

01001000 — первый бит ноль, значит 1 байт кодирует 1 символ -> «H»

01100101 — первый бит ноль, значит 1 байт кодирует 1 символ -> «e»

Если первый бит не нулевой то символ кодируется несколькими байтами.

Для двухбайтовых символов первые три бита должны быть такие — 110

11010000 10111100 — в начале 110, значит 2 байта кодируют 1 символ. Второй байт в таком случае всегда начинается с 10. Итого отбрасываем управляющие биты (начальные, которые выделены красным и зеленым) и берем все оставшиеся (10000111100), переводим их в шестнадцатиричный вид (043С) -> U+043C в юникоде равно символ «м».

для трех-байтовых символов в первом байте ведущие биты — 1110

11101000 10000111 101010101 — суммируем все кроме управляющих битов и получаем что в 16-ричной равно 103В5, U+103D5 — древнеперситдская цифра сто (10000001111010101)

для четырех-байтовых символов в первом байте ведущие биты — 11110

11110100 10001111 10111111 10111111 — U+10FFFF это последний допустимый символ в таблице юникода (100001111111111111111)

Теперь, при желании, можем записать нашу фразу в кодировке UTF-8.

UTF-16

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

Начнем с символов которые кодируются одной кодовой парой. Легко посчитать что таких символов может быть 65 535 (2в16), что полностью совпадает с базовым блоком юникода. Все символы находящиеся в этом блоке юникода в кодировке UTF-16 будут закодированы одной кодовой парой (двумя байтами), тут все просто.

символ «o» (латиница) — 00000000 01101111
символ «M» (кириллица) — 00000100 00011100

Теперь рассмотрим символы за пределами базового юникод диапазона. Для их кодирования потребуется уже две кодовые пары (4 байта). И механизм их кодирования немного сложнее, давайте по порядку.

Для начала введем понятия суррогатной пары. Суррогатная пара — это две кодовые пары используемые для кодирования одного символа (итого 4 байта). Для таких суррогатных пар в таблице юникода отведен специальный диапазон от D800 до DFFF. Это значит, что при преобразовании кодовой пары из байтового вида в шестнадцатиричный вы получаете число из этого диапазона, то перед вами не самостоятельный символ, а суррогатная пара.

Чтобы закодировать символ из диапазона 1000010FFFF (то есть символ для которого нужно использовать более одной кодовой пары) нужно:

  1. из кода символа вычесть 10000(шестнадцатиричное) (это наименьшее число из диапазона 1000010FFFF)
  2. в результате первого пункта будет получено число не больше FFFFF, занимающее до 20 бит
  3. ведущие 10 бит из полученного числа суммируются с D800 (начало диапазона суррогатных пар в юникоде)
  4. следующие 10 бит суммируются с DC00 (тоже число из диапазона суррогатных пар)
  5. после этого получатся 2 суррогатные пары по 16 бит, первые 6 бит в каждой такой паре отвечают за определение того что это суррогат,
  6. десятый бит в каждом суррогате отвечает за его порядок если это 1 то это первый суррогат, если 0, то второй

Разберем это на практике, думаю станет понятнее.

Для примера зашифруем символ, а потом расшифруем. Возьмем древнеперсидскую цифру сто (U+103D5):

  1. 103D510000 = 3D5
  2. 3D5 = 0000000000 1111010101 (ведущие 10 бит получились нулевые приведем это к шестнадцатиричному числу, получим 0 (первые десять), 3D5 (вторые десять))
  3. 0 + D800 = D800 (1101100000000000) первые 6 бит определяют что число из диапазона суррогатных пар десятый бит (справа) нулевой, значит это первый суррогат
  4. 3D5 + DC00 = DFD5 (1101111111010101) первые 6 бит определяют что число из диапазона суррогатных пар десятый бит (справа) единица, значит это второй суррогат
  5. итого данный символ в UTF-16 — 1101100000000000 1101111111010101

Теперь наоборот раскодируем. Допустим что у нас есть вот такой код — 1101100000100010 1101111010001000:

  1. переведем в шестнадцатиричный вид = D822 DE88 (оба значения из диапазона суррогатных пар, значит перед нами суррогатная пара)
  2. 1101100000100010 — десятый бит (справа) нулевой, значит первый суррогат
  3. 1101111010001000 — десятый бит (справа) единица, значит второй суррогат
  4. отбрасываем по 6 бит отвечающих за определение суррогата, получим 0000100010 1010001000 (8A88)
  5. прибавляем 10000 (меньшее число суррогатного диапазона) 8A88 + 10000 = 18A88
  6. смотрим в таблице юникода символ U+18A88 = Tangut Component-649. Компоненты тангутского письма.

Спасибо тем кто смог дочитать до конца, надеюсь было полезно и не очень занудно.

Вот некоторые интересные ссылки по данной теме:
habr.com/ru/post/158895 — полезные общие сведения по кодировкам
habr.com/ru/post/312642 — про юникод
unicode-table.com/ru — сама таблица юникод символов

Ну и собственно куда же без нее
ru.wikipedia.org/wiki/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4 — юникод
ru.wikipedia.org/wiki/ASCII — ASCII
ru.wikipedia.org/wiki/UTF-8 — UTF-8
ru.wikipedia.org/wiki/UTF-16 — UTF-16

From Wikipedia, the free encyclopedia

(Redirected from Win1251)

Windows-1251

MIME / IANA windows-1251
Alias(es) cp1251 (Code page 1251)
Language(s) Russian, Ukrainian, Belarusian, Bulgarian, Serbian Cyrillic, Bosnian Cyrillic, Macedonian, Rotokas, Rusyn, English
Created by Microsoft
Standard WHATWG Encoding Standard
Classification extended ASCII, Windows-125x
Other related encoding(s) Amiga-1251, KZ-1048,
RFC 1345’s «ECMA-Cyrillic»
  • v
  • t
  • e

Windows-1251 is an 8-bit character encoding, designed to cover languages that use the Cyrillic script such as Russian, Ukrainian, Belarusian, Bulgarian, Serbian Cyrillic, Macedonian and other languages.

On the web, it is the second most-used single-byte character encoding (or third most-used character encoding overall), and most used of the single-byte encodings supporting Cyrillic. As of November 2022, 0.4% of all websites use Windows-1251.[1][2] It’s by far mostly used for Russian, while a small minority of Russian websites use it, with 93.7% of Russian (.ru) websites using UTF-8,[3][4][5] and the legacy 8-bit encoding is distant second. In Linux, the encoding is known as cp1251.[6] IBM uses code page 1251 (CCSID 1251 and euro sign extended CCSID 5347) for Windows-1251.[7][8][9][10][11][12][13]

Windows-1251 and KOI8-R (or its Ukrainian variant KOI8-U) are much more commonly used than ISO 8859-5 (which is used by less than 0.0004% of websites).[14] In contrast to Windows-1252 and ISO 8859-1, Windows-1251 is not closely related to ISO 8859-5.

Unicode (e.g. UTF-8) is preferred to Windows-1251 or other Cyrillic encodings in modern applications, especially on the Internet, making UTF-8 the dominant encoding for web pages. (For further discussion of Unicode’s complete coverage, of 436 Cyrillic letters/code points, including for Old Cyrillic, and how single-byte character encodings, such as Windows-1251 and KOI8-R, cannot provide this, see Cyrillic script in Unicode.)

Character set[edit]

The following table shows Windows-1251. Each character is shown with its Unicode equivalent and its Alt code.

Windows-1251[15]
0 1 2 3 4 5 6 7 8 9 A B C D E F
0x NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
1x DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
2x  SP  ! » # $ % & ( ) * + , . /
3x 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4x @ A B C D E F G H I J K L M N O
5x P Q R S T U V W X Y Z [ ] ^ _
6x ` a b c d e f g h i j k l m n o
7x p q r s t u v w x y z { | } ~ DEL
8x Ђ Ѓ ѓ Љ Њ Ќ Ћ Џ
9x ђ љ њ ќ ћ џ
Ax NBSP Ў ў Ј ¤ Ґ ¦ § Ё © Є « ¬ SHY ® Ї
Bx ° ± І і ґ µ · ё є » ј Ѕ ѕ ї
Cx А Б В Г Д Е Ж З И Й К Л М Н О П
Dx Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
Ex а б в г д е ж з и й к л м н о п
Fx р с т у ф х ц ч ш щ ъ ы ь э ю я

Kazakh variant[edit]

An altered version of Windows-1251 was standardised in Kazakhstan as Kazakh standard STRK1048, and is known by the label KZ-1048. It differs in the rows shown below:

KZ-1048 (STRK1048-2002)[16]
0 1 2 3 4 5 6 7 8 9 A B C D E F
8x Ђ Ѓ ѓ Љ Њ Қ Һ Џ
9x ђ љ њ қ һ џ
Ax NBSP Ұ ұ Ә ¤ Ө ¦ § Ё © Ғ « ¬ SHY ® Ү
Bx ° ± І і ө µ · ё ғ » ә Ң ң ү

  Differences from Windows-1251

Amiga variant[edit]

Amiga-1251

MIME / IANA Amiga-1251
Alias(es) Ami1251
Language(s) English, Russian
Classification extended ASCII
Based on Windows-1251, ISO-8859-1, ISO-8859-15
  • v
  • t
  • e

Russian Amiga OS systems used a version of code page 1251 which matches Windows-1251 for the Russian subset of the Cyrillic letters, but otherwise mostly follows ISO-8859-1. This version is known as Amiga-1251,[17] under which name it is registered with the IANA.[18]

Amiga-1251[17]
0 1 2 3 4 5 6 7 8 9 A B C D E F
8x XXX XXX BPH NBH IND NEL SSA ESA HTS HTJ VTS PLD PLU RI SS2 SS3
9x DCS PU1 PU2 STS CCH MW SPA EPA SOS XXX SCI CSI ST OSC PM APC
Ax NBSP ¡ ¢ £ [a] ¥ ¦ § Ё © [b] « ¬ SHY ® ¯
Bx ° ± ² ³ ´ µ · ё ¹ º » ¼ ½ ¾ ¿

  Different from Windows-1251 to match ISO-8859-1

  Different from both Windows-1251 and ISO-8859-1

  1. ^ Matching ISO-8859-15; at a different location than in Windows-1251
  2. ^ Present in Windows-1251, but in a different location (absent from ISO-8859-1/15)

See also[edit]

  • Latin script in Unicode
  • Unicode
  • Universal Character Set
    • European Unicode subset (DIN 91379)
  • UTF-8

References[edit]

  1. ^ «Historical trends in the usage of character encodings, November 2022». Retrieved 2022-11-28.
  2. ^ «Frequently Asked Questions».
  3. ^ «Distribution of Character Encodings among websites that use .ru». w3techs.com. Retrieved 2022-11-28.
  4. ^ «Distribution of Character Encodings among websites that use Russian». w3techs.com. Retrieved 2023-01-16.
  5. ^ «Distribution of Character Encodings among websites that use Russian Federation». w3techs.com. Retrieved 2021-11-05.
  6. ^ «cp1251(7) — Linux manual page». man7.org. Retrieved 2018-07-01.
  7. ^ «Code page 1251 information document». Archived from the original on 2016-03-03.
  8. ^ «CCSID 1251 information document». Archived from the original on 2014-11-29.
  9. ^ «CCSID 5347 information document». Archived from the original on 2014-11-29.
  10. ^ Code Page CPGID 01251 (pdf) (PDF), IBM
  11. ^ Code Page CPGID 01251 (txt), IBM
  12. ^ International Components for Unicode (ICU), ibm-1251_P100-1995.ucm, 2002-12-03
  13. ^ International Components for Unicode (ICU), ibm-5347_P100-1998.ucm, 2002-12-03
  14. ^ «Usage Statistics of Character Encodings for Websites». w3techs.com. Archived from the original on 2012-05-30.
  15. ^ Steele, Shawn (1998). CP1251 to Unicode table. Unicode Consortium. CP1251.TXT.
  16. ^ Whistler, Ken (2007). KZ-1048 to Unicode. Unicode Consortium. KZ1048.TXT.
  17. ^ a b Malyshev, Michael (2003). «Amiga-1251 to Unicode table». Registration of new charset [Amiga-1251]. IANA.
  18. ^ «Character Sets». IANA.

Further reading[edit]

  • Kornai, Andras; Birnbaum, David J.; da Cruz, Frank; Davis, Bur; Fowler, George; Paine, Richard B.; Paperno, Slava; Simonsen, Keld J.; Thobe, Glenn E.; Vulis, Dimitri; van Wingen, Johan W. (1993-03-13). «CYRILLIC ENCODING FAQ Version 1.3». Retrieved 2020-06-24.

External links[edit]

  • Windows 1251 reference chart
  • IANA Charset Name Registration
  • Unicode mappings of windows 1251 with «best fit»
  • Universal Cyrillic decoder, an online program that may help recovering unreadable Cyrillic texts with broken Windows-1251 or other character encodings.

From Wikipedia, the free encyclopedia

(Redirected from Win1251)

Windows-1251

MIME / IANA windows-1251
Alias(es) cp1251 (Code page 1251)
Language(s) Russian, Ukrainian, Belarusian, Bulgarian, Serbian Cyrillic, Bosnian Cyrillic, Macedonian, Rotokas, Rusyn, English
Created by Microsoft
Standard WHATWG Encoding Standard
Classification extended ASCII, Windows-125x
Other related encoding(s) Amiga-1251, KZ-1048,
RFC 1345’s «ECMA-Cyrillic»
  • v
  • t
  • e

Windows-1251 is an 8-bit character encoding, designed to cover languages that use the Cyrillic script such as Russian, Ukrainian, Belarusian, Bulgarian, Serbian Cyrillic, Macedonian and other languages.

On the web, it is the second most-used single-byte character encoding (or third most-used character encoding overall), and most used of the single-byte encodings supporting Cyrillic. As of November 2022, 0.4% of all websites use Windows-1251.[1][2] It’s by far mostly used for Russian, while a small minority of Russian websites use it, with 93.7% of Russian (.ru) websites using UTF-8,[3][4][5] and the legacy 8-bit encoding is distant second. In Linux, the encoding is known as cp1251.[6] IBM uses code page 1251 (CCSID 1251 and euro sign extended CCSID 5347) for Windows-1251.[7][8][9][10][11][12][13]

Windows-1251 and KOI8-R (or its Ukrainian variant KOI8-U) are much more commonly used than ISO 8859-5 (which is used by less than 0.0004% of websites).[14] In contrast to Windows-1252 and ISO 8859-1, Windows-1251 is not closely related to ISO 8859-5.

Unicode (e.g. UTF-8) is preferred to Windows-1251 or other Cyrillic encodings in modern applications, especially on the Internet, making UTF-8 the dominant encoding for web pages. (For further discussion of Unicode’s complete coverage, of 436 Cyrillic letters/code points, including for Old Cyrillic, and how single-byte character encodings, such as Windows-1251 and KOI8-R, cannot provide this, see Cyrillic script in Unicode.)

Character set[edit]

The following table shows Windows-1251. Each character is shown with its Unicode equivalent and its Alt code.

Windows-1251[15]
0 1 2 3 4 5 6 7 8 9 A B C D E F
0x NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
1x DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
2x  SP  ! » # $ % & ( ) * + , . /
3x 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4x @ A B C D E F G H I J K L M N O
5x P Q R S T U V W X Y Z [ ] ^ _
6x ` a b c d e f g h i j k l m n o
7x p q r s t u v w x y z { | } ~ DEL
8x Ђ Ѓ ѓ Љ Њ Ќ Ћ Џ
9x ђ љ њ ќ ћ џ
Ax NBSP Ў ў Ј ¤ Ґ ¦ § Ё © Є « ¬ SHY ® Ї
Bx ° ± І і ґ µ · ё є » ј Ѕ ѕ ї
Cx А Б В Г Д Е Ж З И Й К Л М Н О П
Dx Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
Ex а б в г д е ж з и й к л м н о п
Fx р с т у ф х ц ч ш щ ъ ы ь э ю я

Kazakh variant[edit]

An altered version of Windows-1251 was standardised in Kazakhstan as Kazakh standard STRK1048, and is known by the label KZ-1048. It differs in the rows shown below:

KZ-1048 (STRK1048-2002)[16]
0 1 2 3 4 5 6 7 8 9 A B C D E F
8x Ђ Ѓ ѓ Љ Њ Қ Һ Џ
9x ђ љ њ қ һ џ
Ax NBSP Ұ ұ Ә ¤ Ө ¦ § Ё © Ғ « ¬ SHY ® Ү
Bx ° ± І і ө µ · ё ғ » ә Ң ң ү

  Differences from Windows-1251

Amiga variant[edit]

Amiga-1251

MIME / IANA Amiga-1251
Alias(es) Ami1251
Language(s) English, Russian
Classification extended ASCII
Based on Windows-1251, ISO-8859-1, ISO-8859-15
  • v
  • t
  • e

Russian Amiga OS systems used a version of code page 1251 which matches Windows-1251 for the Russian subset of the Cyrillic letters, but otherwise mostly follows ISO-8859-1. This version is known as Amiga-1251,[17] under which name it is registered with the IANA.[18]

Amiga-1251[17]
0 1 2 3 4 5 6 7 8 9 A B C D E F
8x XXX XXX BPH NBH IND NEL SSA ESA HTS HTJ VTS PLD PLU RI SS2 SS3
9x DCS PU1 PU2 STS CCH MW SPA EPA SOS XXX SCI CSI ST OSC PM APC
Ax NBSP ¡ ¢ £ [a] ¥ ¦ § Ё © [b] « ¬ SHY ® ¯
Bx ° ± ² ³ ´ µ · ё ¹ º » ¼ ½ ¾ ¿

  Different from Windows-1251 to match ISO-8859-1

  Different from both Windows-1251 and ISO-8859-1

  1. ^ Matching ISO-8859-15; at a different location than in Windows-1251
  2. ^ Present in Windows-1251, but in a different location (absent from ISO-8859-1/15)

See also[edit]

  • Latin script in Unicode
  • Unicode
  • Universal Character Set
    • European Unicode subset (DIN 91379)
  • UTF-8

References[edit]

  1. ^ «Historical trends in the usage of character encodings, November 2022». Retrieved 2022-11-28.
  2. ^ «Frequently Asked Questions».
  3. ^ «Distribution of Character Encodings among websites that use .ru». w3techs.com. Retrieved 2022-11-28.
  4. ^ «Distribution of Character Encodings among websites that use Russian». w3techs.com. Retrieved 2023-01-16.
  5. ^ «Distribution of Character Encodings among websites that use Russian Federation». w3techs.com. Retrieved 2021-11-05.
  6. ^ «cp1251(7) — Linux manual page». man7.org. Retrieved 2018-07-01.
  7. ^ «Code page 1251 information document». Archived from the original on 2016-03-03.
  8. ^ «CCSID 1251 information document». Archived from the original on 2014-11-29.
  9. ^ «CCSID 5347 information document». Archived from the original on 2014-11-29.
  10. ^ Code Page CPGID 01251 (pdf) (PDF), IBM
  11. ^ Code Page CPGID 01251 (txt), IBM
  12. ^ International Components for Unicode (ICU), ibm-1251_P100-1995.ucm, 2002-12-03
  13. ^ International Components for Unicode (ICU), ibm-5347_P100-1998.ucm, 2002-12-03
  14. ^ «Usage Statistics of Character Encodings for Websites». w3techs.com. Archived from the original on 2012-05-30.
  15. ^ Steele, Shawn (1998). CP1251 to Unicode table. Unicode Consortium. CP1251.TXT.
  16. ^ Whistler, Ken (2007). KZ-1048 to Unicode. Unicode Consortium. KZ1048.TXT.
  17. ^ a b Malyshev, Michael (2003). «Amiga-1251 to Unicode table». Registration of new charset [Amiga-1251]. IANA.
  18. ^ «Character Sets». IANA.

Further reading[edit]

  • Kornai, Andras; Birnbaum, David J.; da Cruz, Frank; Davis, Bur; Fowler, George; Paine, Richard B.; Paperno, Slava; Simonsen, Keld J.; Thobe, Glenn E.; Vulis, Dimitri; van Wingen, Johan W. (1993-03-13). «CYRILLIC ENCODING FAQ Version 1.3». Retrieved 2020-06-24.

External links[edit]

  • Windows 1251 reference chart
  • IANA Charset Name Registration
  • Unicode mappings of windows 1251 with «best fit»
  • Universal Cyrillic decoder, an online program that may help recovering unreadable Cyrillic texts with broken Windows-1251 or other character encodings.



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

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

Dec Hex Символ   Dec Hex Символ
000 00 NOP   128 80 Ђ
001 01 SOH   129 81 Ѓ
002 02 STX   130 82
003 03 ETX   131 83 ѓ
004 04 EOT   132 84
005 05 ENQ   133 85
006 06 ACK   134 86
007 07 BEL   135 87
008 08 BS   136 88
009 09 TAB   137 89
010 0A LF   138 8A Љ
011 0B VT   139 8B
012 0C FF   140 8C Њ
013 0D CR   141 8D Ќ
014 0E SO   142 8E Ћ
015 0F SI   143 8F Џ
016 10 DLE   144 90 ђ
017 11 DC1   145 91
018 12 DC2   146 92
019 13 DC3   147 93
020 14 DC4   148 94
021 15 NAK   149 95
022 16 SYN   150 96
023 17 ETB   151 97
024 18 CAN   152 98
025 19 EM   153 99
026 1A SUB   154 9A љ
027 1B ESC   155 9B
028 1C FS   156 9C њ
029 1D GS   157 9D ќ
030 1E RS   158 9E ћ
031 1F US   159 9F џ
032 20 SP   160 A0  
033 21 !   161 A1 Ў
034 22 «   162 A2 ў
035 23 #   163 A3 Ћ
036 24 $   164 A4 ¤
037 25 %   165 A5 Ґ
038 26 &   166 A6 ¦
039 27   167 A7 §
040 28 (   168 A8 Ё
041 29 )   169 A9 ©
042 2A *   170 AA Є
043 2B +   171 AB «
044 2C ,   172 AC ¬
045 2D   173 AD ­
046 2E .   174 AE ®
047 2F /   175 AF Ї
048 30 0   176 B0 °
049 31 1   177 B1 ±
050 32 2   178 B2 І
051 33 3   179 B3 і
052 34 4   180 B4 ґ
053 35 5   181 B5 µ
054 36 6   182 B6
055 37 7   183 B7 ·
056 38 8   184 B8 ё
057 39 9   185 B9
058 3A :   186 BA є
059 3B ;   187 BB »
060 3C <   188 BC ј
061 3D =   189 BD Ѕ
062 3E >   190 BE ѕ
063 3F ?   191 BF ї
064 40 @   192 C0 А
065 41 A   193 C1 Б
066 42 B   194 C2 В
067 43 C   195 C3 Г
068 44 D   196 C4 Д
069 45 E   197 C5 Е
070 46 F   198 C6 Ж
071 47 G   199 C7 З
072 48 H   200 C8 И
073 49 I   201 C9 Й
074 4A J   202 CA К
075 4B K   203 CB Л
076 4C L   204 CC М
077 4D M   205 CD Н
078 4E N   206 CE О
079 4F O   207 CF П
080 50 P   208 D0 Р
081 51 Q   209 D1 С
082 52 R   210 D2 Т
083 53 S   211 D3 У
084 54 T   212 D4 Ф
085 55 U   213 D5 Х
086 56 V   214 D6 Ц
087 57 W   215 D7 Ч
088 58 X   216 D8 Ш
089 59 Y   217 D9 Щ
090 5A Z   218 DA Ъ
091 5B [   219 DB Ы
092 5C   220 DC Ь
093 5D ]   221 DD Э
094 5E ^   222 DE Ю
095 5F _   223 DF Я
096 60 `   224 E0 а
097 61 a   225 E1 б
098 62 b   226 E2 в
099 63 c   227 E3 г
100 64 d   228 E4 д
101 65 e   229 E5 е
102 66 f   230 E6 ж
103 67 g   231 E7 з
104 68 h   232 E8 и
105 69 i   233 E9 й
106 6A j   234 EA к
107 6B k   235 EB л
108 6C l   236 EC м
109 6D m   237 ED н
110 6E n   238 EE о
111 6F o   239 EF п
112 70 p   240 F0 р
113 71 q   241 F1 с
114 72 r   242 F2 т
115 73 s   243 F3 у
116 74 t   244 F4 ф
117 75 u   245 F5 х
118 76 v   246 F6 ц
119 77 w   247 F7 ч
120 78 x   248 F8 ш
121 79 y   249 F9 щ
122 7A z   250 FA ъ
123 7B {   251 FB ы
124 7C |   252 FC ь
125 7D }   253 FD э
126 7E ~   254 FE ю
127 7F DEL   255 FF я

Описание специальных (управляющих) символов

Первоначально управляющие символы таблицы ASCII (диапазон 00-31, плюс 127) были разработаны для того, чтобы управлять устройствами аппаратных средств, таких как телетайп, ввод данных на перфоленту и др.
Управляющие символы (кроме горизонтальной табуляции, перевода строки и возврата каретки) не используются в HTML-документах.

Cпециальные (управляющие) символы

Код Описание
NUL, 00 Null, пустой
SOH, 01 Start Of Heading, начало заголовка
STX, 02 Start of TeXt, начало текста
ETX, 03 End of TeXt, конец текста
EOT, 04 End of Transmission, конец передачи
ENQ, 05 Enquire. Прошу подтверждения
ACK, 06 Acknowledgement. Подтверждаю
BEL, 07 Bell, звонок
BS, 08 Backspace, возврат на один символ назад
TAB, 09 Tab, горизонтальная табуляция
LF, 0A Line Feed, перевод строки
Сейчас в большинстве языков программирования обозначается как n
VT, 0B Vertical Tab, вертикальная табуляция
FF, 0C Form Feed, прогон страницы, новая страница
CR, 0D Carriage Return, возврат каретки
Сейчас в большинстве языков программирования обозначается как r
SO, 0E Shift Out, изменить цвет красящей ленты в печатающем устройстве
SI, 0F Shift In, вернуть цвет красящей ленты в печатающем устройстве обратно
DLE, 10 Data Link Escape, переключение канала на передачу данных
DC1, 11
DC2, 12
DC3, 13
DC4, 14
Device Control, символы управления устройствами
NAK, 15 Negative Acknowledgment, не подтверждаю
SYN, 16 Synchronization. Символ синхронизации
ETB, 17 End of Text Block, конец текстового блока
CAN, 18 Cancel, отмена переданного ранее
EM, 19 End of Medium, конец носителя данных
SUB, 1A Substitute, подставить. Ставится на месте символа, значение которого было потеряно или испорчено при передаче
ESC, 1B Escape Управляющая последовательность
FS, 1C File Separator, разделитель файлов
GS, 1D Group Separator, разделитель групп
RS, 1E Record Separator, разделитель записей
US, 1F Unit Separator, разделитель юнитов
DEL, 7F Delete, стереть последний символ.

Смотрите также:

URL коды символов ACSII

URL коды символов UTF-8 диапазон от U+0400 до U+04FF

HTML Кодирование URL

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



Информатика для 10-го класса

Информатика. 10 класс. Босова Л.Л.png

Предмет: Информатика
Класс: 10
Автор учебника: Босова Л.Л.
Год издания: 2016
Издательство:
Кол-во заданий: 25
Кол-во упражнений:

Мы в социальных сетях

Телеграм • ВКонтакте

Если есть вопросы, дополнения, правки, вопросы к тексту ответа, пишите на странице обсуждения.

Кодирование текстовой информации[править | править код]

Представление текстовой информации в компьютере[править | править код]

  • Какова основная идея представления текстовой информации в компьютере?

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

Кодировка ASCII[править | править код]

  • Что представляет собой кодировка ASCII? Сколько символов она включает? Какие это символы?

Кодировка ASCII (American Standard Code for Information Interchange — американский стандартный код для обмена информацией) представляет собой систему представления символов (букв, цифр, символов и знаков препинания) в виде чисел. Он включает 128 символов и символов от 0 до 127. Эти символы в основном представляют собой буквы и цифры, а также некоторые распространенные символы, такие как !, @, #, $, %, ^, &, *, (, ), -, + , =, {, }, [, ], :, ;, » , ‘, <, >, ?, /, , | и ~.

  • Как известно, кодовые таблицы каждому символу алфавита ставят в соответствие его двоичный код. Как, в таком случае, вы можете объяснить вид таблицы 3.8 «Кодировка ASCII»?

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

  • С помощью таблицы 3.8 Кодировка ASCII:
  1. а) декодируйте сообщение 64 65 73 6B 74 6F 70; — Desktop;
  2. б) запишите в двоичном коде сообщение TOWER; — 01010100 01001111 01001111 01000101 01010010;
  3. в) декодируйте сообщение 01101100 01100001 01110000 01110100 01101111 01110000 — Laptop.
  • Что представляют собой расширения ASCII-кодировки? Назовите основные расширения ASCII-кодировки, содержащие русские буквы.

ASCII (American Standard Code for Information Interchange) — это система кодирования символов, используемая для представления текста в компьютерах и других электронных устройствах. Расширения кодировки ASCII — это дополнительные наборы символов, которые были разработаны для включения символов неанглийских языков, например русского. Основные расширения кодировки ASCII, содержащие русские буквы:

  1. КОИ8-Р (русский)
  2. Windows-1251 (кириллица)
  3. ISO-8859-5 (кириллица)
  4. CP866 (кириллица-DOS)
  5. маккириллица
  6. IBM855 (кириллица)

Подходы к расположению русских букв в кодировках Windows-1251 и КОИ-8[править | править код]

  • Сравните подходы к расположению русских букв в кодировках Windows-1251 и КОИ-8.

Кодировка Windows-1251 представляет собой одну из самых распространенных кодировок для отображения русских букв. Она использует для каждой буквы последовательность байтов из двух символов. Первый символ указывает на расположение буквы в кодовой таблице, а второй указывает на саму букву. Таким образом, русские буквы могут быть расположены в пределах одного байта и внутри двух байтов.

КОИ-8 является двухбайтной кодировкой, которая использует два байта для представления каждой русской буквы. Первый байт указывает на конкретную букву, а второй байт указывает на соседние буквы, которые могут быть использованы для построения слова. Таким образом, КОИ-8 позволяет располагать русские буквы внутри двух байтов, что делает ее более эффективной по сравнению с Windows-1251.

Расшифровка кодировок в разных системах кодировок[править | править код]

  • Представьте в кодировке Windows-1251 текст «Знание — сила!»:
  1. а) шестнадцатеричным кодом — 8F D8 D2 EE E4 EA E2 20 E1 E2 E0 F2 E0 21;
  2. б) двоичным кодом — 10001111 11011000 11010010 11101110 11100100 11101010 11100010 00100000 11100001 1100010 11100000 11110010 11100000 00100001;
  3. в) десятичным кодом — 143 216 210 238 228 202 32 177 194 192 242 224 33.
  • Представьте в кодировке КОИ-8 текст «Дело в шляпе!»:
  1. а) шестнадцатеричным кодом — 44 65 6C 6F 20 77 20 E8 6C 7A 61 70 65 21;
  2. б) двоичным кодом — 01000100 01100101 01101100 01101111 00100000 01110111 00100000 11101000 01101100 01111010 01100001 01110000 01100101 00100001;
  3. в) десятичным кодом — 68 101 108 111 32 119 111 232 108 122 97 112 101 33.

Содержание файла в современном текстовом процессоре[править | править код]

  • Что является содержимым файла, созданного в современном текстовом процессоре?

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

Расчёты объёма памяти различных кодировок[править | править код]

  • В кодировке Unicode на каждый символ отводится 2 байта. Определите в этой кодировке информационный объём следующей строки: Где родился, там и сгодился.

Строка состоит из 34 символов. Так как в кодировке Unicode на каждый символ отводится 2 байта, то общий информационный объём строки составит 68 байт.

  • Набранный на компьютере текст содержит 2 страницы. На каждой странице 32 строки, в каждой строке 64 символа. Определите информационный объём текста в кодировке Unicode, в которой каждый символ кодируется 16 битами.

В данном случае информационный объем текста составит 2 страницы * 32 строки * 64 символа * 16 бит = 65536 бит, что в свою очередь равно 8192 байтам (1 байт = 8 бит).

Это обусловлено тем, что каждый символ в Unicode кодируется 16 битами. Следовательно, информационный объем текста в данной кодировке равен количеству символов в тексте, умноженному на 16 бит.

  • Текст на русском языке, первоначально записанный в 8-битовом коде Windows, был перекодирован в 16-битную кодировку Unicode. Известно, что этот текст был распечатан на 128 страницах, каждая из которых содержала 32 строки по 64 символа в каждой строке. Каков информационный объём этого текста?

Информационный объем текста равен 128 страниц * 32 строки * 64 символам * 2 байта на символ, то есть 167772160 байт. Это примерно 16 мегабайт. Это означает, что он содержит приблизительно 16 мегабайт информации.

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

  • В текстовом процессоре MS Word откройте таблицу символов (вкладка Вставка → Символ → Другие символы): (рисунок). В поле Шрифт установите Times New Roman, в поле из — кириллица (дес.). Вводя в поле Код знака десятичные коды символов, декодируйте сообщение:
196 238 240 238 227 243 32
238 241 232 235 232 242 32
232 228 243 249 232 233 46

Tools.png

Этот раздел требует полной доработки. Знаете ответ? Тогда Вы можете помочь проекту!

  • Этот раздел задания необходимо заполнить. Комментарии могут быть на странице обсуждения.

Ответы на вопросы других параграфов[править | править код]

Содержание

  • 1 Представление символов в вычислительных машинах
  • 2 Таблицы кодировок
  • 3 Кодировки стандарта ASCII
    • 3.1 Структурные свойства таблицы
  • 4 Кодировки стандарта UNICODE
    • 4.1 Кодовое пространство
    • 4.2 Модифицирующие символы
    • 4.3 Способы представления
    • 4.4 UTF-8
      • 4.4.1 Принцип кодирования
        • 4.4.1.1 Правила записи кода одного символа в UTF-8
        • 4.4.1.2 Определение длины кода в UTF-8
    • 4.5 UTF-16
      • 4.5.1 UTF-16LE и UTF-16BE
    • 4.6 UTF-32
    • 4.7 Порядок байт
      • 4.7.1 Варианты записи
        • 4.7.1.1 Порядок от старшего к младшему
        • 4.7.1.2 Порядок от младшего к старшему
        • 4.7.1.3 Переключаемый порядок
        • 4.7.1.4 Смешанный порядок
        • 4.7.1.5 Различия
      • 4.7.2 Маркер последовательности байт
    • 4.8 Проблемы Юникода
  • 5 Примеры
    • 5.1 Код на python
    • 5.2 hex-дамп файла exampleBOM
  • 6 См. также
  • 7 Источники информации

Представление символов в вычислительных машинах

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

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

Таблицы кодировок

На заре компьютерной эры на каждый символ было отведено по пять бит. Это было связано с малым количеством оперативной памяти на компьютерах тех лет. В эти символа входили только управляющие символы и строчные буквы английского алфавита.

С ростом производительности компьютеров стали появляться таблицы кодировок с большим количеством символов.
Первой семибитной кодировкой стала ASCII7. В нее уже вошли прописные буквы английского алфавита, арабские цифры, знаки препинания.
Затем на ее базе была разработана ASCII8, в которым уже стало возможным хранение символов: основных и еще столько же расширенных. Первая часть таблицы осталась без изменений, а вторая может иметь различные варианты (каждый имеет свой номер). Эта часть таблицы стала заполняться символами национальных алфавитов.

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

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

Определение:
ASCII — таблицы кодировок, в которых содержатся основные символы (английский алфавит, цифры, знаки препинания, символы национальных алфавитов(свои для каждого региона), служебные символы) и длина кода каждого символа бит.

бит:

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

Кодировки стандарта ASCII ( бит):

  • ASCII — первая кодировка, в которой стало возможно использовать символы национальных алфавитов.
  • КОИ8-R — первая русская кодировка. Символы кириллицы расположены не в алфавитном порядке. Их разместили в верхнюю половину таблицы так, чтобы позиции кириллических символов соответствовали их фонетическим аналогам в английском алфавите. Это значит, что даже при потере старшего бита каждого символа, например, при проходе через устаревший семибитный модем, текст остается «читаемым».
  • CP866 — русская кодировка, использовавшаяся на компьютерах IBM в системе DOS.
  • Windows-1251 — русская кодировка, использовавшаяся в русскоязычных версиях операционной системы Windows в начале 90-х годов. Кириллические символы идут в алфавитном порядке. Содержит все символы, встречающиеся в типографике обычного текста (кроме знака ударения).

Структурные свойства таблицы

  • Цифры 0-9 представляются своими двоичными значениями (например, ), перед которыми стоит . Таким образом, двоично-десятичные числа (BCD) превращаются в ASCII-строку с помощью простого добавления слева к каждому двоично-десятичному полубайту.
  • Буквы A-Z верхнего и нижнего регистров различаются в своём представлении только одним битом, что упрощает преобразование регистра и проверку на диапазон. Буквы представляются своими порядковыми номерами в алфавите, записанными в двоичной системе счисления, перед которыми стоит (для букв верхнего регистра) или (для букв нижнего регистра).
  0 1 2 3 4 5 6 7 8 9 A B C D E F
0 NUL SOH STX ETX EOT ENQ ACK BEL BS TAB LF VT FF CR SO SI
1 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
2    ! » # $  % & ( ) * + , . /
3 0 1 2 3 4 5 6 7 8 9  :  ; < = >  ?
4 @ A B C D E F G H I J K L M N O
5 P Q R S T U V W X Y Z [ ] ^ _
6 ` a b c d e f g h i j k l m n o
7 p q r s t u v w x y z { | } ~ DEL

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

Юникод или Уникод (англ. Unicode) — это промышленный стандарт обеспечивающий цифровое представление символов всех письменностей мира, и специальных символов.

Стандарт предложен в 1991 году некоммерческой организацией «Консорциум Юникода» (англ. Unicode Consortium, Unicode Inc.). Применение этого стандарта позволяет закодировать очень большое число символов из разных письменностей.
Стандарт состоит из двух основных разделов: универсальный набор символов (англ. UCS, universal character set) и семейство кодировок (англ. UTF, Unicode transformation format). Универсальный набор символов задаёт однозначное соответствие символов кодам — элементам кодового пространства, представляющим неотрицательные целые числа.Семейство кодировок определяет машинное представление последовательности кодов UCS.

Коды в стандарте Unicode разделены на несколько областей. Область с кодами от U+0000 до U+007F содержит символы набора ASCII с соответствующими кодами. Далее расположены области знаков различных письменностей, знаки пунктуации и технические символы. Под символы кириллицы выделены области знаков с кодами от U+0400 до U+052F, от U+2DE0 до U+2DFF, от U+A640 до U+A69F. Часть кодов зарезервирована для использования в будущем.

Кодовое пространство

Хотя формы записи UTF-8 и UTF-32 позволяют кодировать до кодовых позиций, было принято решение использовать лишь для совместимости с UTF-16. Впрочем, даже и этого на текущий момент более чем достаточно — в версии 6.0 используется чуть менее кодовых позиций ( графических и прочих символов).

Кодовое пространство разбито на плоскостей (англ. planes) по символов. Нулевая плоскость называется базовой, в ней расположены символы наиболее употребительных письменностей. Первая плоскость используется, в основном, для исторических письменностей, вторая — для для редко используемых иероглифов китайского письма, третья зарезервирована для архаичных китайских иероглифов. Плоскости и выделены для частного употребления.

Для обозначения символов Unicode используется запись вида «U+xxxx» (для кодов ) или «U+xxxxx» (для кодов ) или «U+xxxxxx» (для кодов ), где xxx — шестнадцатеричные цифры. Например, символ «я» (U+044F) имеет код .

Плоскости Юникода
Плоскость Название Диапазон символов
Plane 0 Basic multilingual plane (BMP) U+0000…U+​FFFF
Plane 1 Supplementary multilingual plane (SMP) U+10000…U+​1FFFF
Plane 2 Supplementary ideographic plane (SIP) U+20000…U+​2FFFF
Planes 3-13 Unassigned U+30000…U+​DFFFF
Plane 14 Supplement­ary special-purpose plane (SSP) U+E0000…U+​EFFFF
Planes 15-16 Supplement­ary private use area (S PUA A/B) U+F0000…U+​10FFFF

Модифицирующие символы

Ji.png

Графические символы в Юникоде делятся на протяжённые и непротяжённые. Непротяжённые символы при отображении не занимают дополнительного места в строке. К примеру, к ним относятся знак ударения. Протяжённые и непротяжённые символы имеют собственные коды, но последние не могут встречаться самостоятельно. Протяжённые символы называются базовыми (англ. base characters), а непротяженные — модифицирующими (англ. combining characters). Например символ «Й» (U+0419) может быть представлен в виде базового символа «И» (U+0418) и модифицирующего символа « ̆» (U+0306).

Способы представления

Юникод имеет несколько форм представления (англ. Unicode Transformation Format, UTF): UTF-8, UTF-16 (UTF-16BE, UTF-16LE) и UTF-32 (UTF-32BE, UTF-32LE). Была разработана также форма представления UTF-7 для передачи по семибитным каналам, но из-за несовместимости с ASCII она не получила распространения и не включена в стандарт.

UTF-8

UTF-8 — представление Юникода, обеспечивающее наилучшую совместимость со старыми системами, использовавшими -битные символы. Текст, состоящий только из символов с номером меньше , при записи в UTF-8 превращается в обычный текст ASCII. И наоборот, в тексте UTF-8 любой байт со значением меньше изображает символ ASCII с тем же кодом. Остальные символы Юникода изображаются последовательностями длиной от двух до шести байт (на деле, только до четырех байт, поскольку в Юникоде нет символов с кодом больше , и вводить их в будущем не планируется), в которых первый байт всегда имеет вид , а остальные — .

Символы UTF-8 получаются из Unicode cледующим образом:

Unicode UTF-8 Представленные символы
0x00000000 — 0x0000007F 0xxxxxxx ASCII, в том числе английский алфавит, простейшие знаки препинания и арабские цифры
0x00000080 — 0x000007FF 110xxxxx 10xxxxxx кириллица, расширенная латиница, арабский алфавит, армянский алфавит, греческий алфавит, еврейский алфавит и коптский алфавит; сирийское письмо, тана, нко; Международный фонетический алфавит; некоторые знаки препинания
0x00000800 — 0x0000FFFF 1110xxxx 10xxxxxx 10xxxxxx все другие современные формы письменности, в том числе грузинский алфавит, индийское, китайское, корейское и японское письмо; сложные знаки препинания; математические и другие специальные символы
0x00010000 — 0x001FFFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx музыкальные символы, редкие китайские иероглифы, вымершие формы письменности
111111xx служебные символы c, d, e, f

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

Принцип кодирования

Правила записи кода одного символа в UTF-8

1. Если размер символа в кодировке UTF-8 = байт

Код имеет вид (0aaa aaaa), где «0» — просто ноль, остальные биты «a» — это код символа в кодировке ASCII;

2. Если размер символа в кодировке в UTF-8 байт (то есть от до ):

2.1 Первый байт содержит количество байт символа, закодированное в единичной системе счисления;
2 — 11
3 — 111
4 — 1111
5 — 1111 1
6 — 1111 11
2.2 «0» — бит терминатор, означающий завершение кода размера
2.3 далее идут значащие байты кода, которые имеют вид (10xx xxxx), где «10» — биты признака продолжения, а «x» — значащие биты.

В общем случае варианты представления одного символа в кодировке UTF-8 выглядят так:

(1 байт)  0aaa aaaa 
(2 байта) 110x xxxx 10xx xxxx
(3 байта) 1110 xxxx 10xx xxxx 10xx xxxx
(4 байта) 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx
(5 байт)  1111 10xx 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx
(6 байт)  1111 110x 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx
Определение длины кода в UTF-8
Количество байт UTF-8 Количество значащих бит

В общем случае количество значащих бит , кодируемых байтами UTF-8, определяется по формуле:

при

при

UTF-16

UTF-16 — один из способов кодирования символов (англ. code point) из Unicode в виде последовательности -битных слов (англ. code unit). Данная кодировка позволяет записывать символы Юникода в диапазонах U+0000..U+D7FF и U+E000..U+10FFFF (общим количеством ), причем -байтные символы представляются как есть, а более длинные — с помощью суррогатных пар (англ. surrogate pair), для которых и вырезан диапазон .

В UTF-16 символы кодируются двухбайтовыми словами с использованием всех возможных диапазонов значений (от до ). При этом можно кодировать символы Unicode в диапазонах и . Исключенный отсюда диапазон используется как раз для кодирования так называемых суррогатных пар — символов, которые кодируются двумя -битными словами. Символы Unicode до включительно (исключая диапазон для суррогатов) записываются как есть -битным словом. Символы же в диапазоне (больше бит) уже кодируются парой -битных слов. Для этого их код арифметически сдвигается до нуля (из него вычитается минимальное число ). В результате получится значение от нуля до , которое занимает до бит. Старшие бит этого значения идут в лидирующее (первое) слово, а младшие бит — в последующее (второе). При этом в обоих словах старшие бит используются для обозначения суррогата. Биты с по имеют значения , а -й бит содержит у лидирующего слова и — у последующего. В связи с этим можно легко определить к чему относится каждое слово.

UTF-16LE и UTF-16BE

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

UTF-32

UTF-32 — один из способов кодирования символов из Юникод, использующий для кодирования любого символа ровно бита. Остальные кодировки, UTF-8 и UTF-16, используют для представления символов переменное число байт. Символ UTF-32 является прямым представлением его кодовой позиции (англ. code point).

Главное преимущество UTF-32 перед кодировками переменной длины заключается в том, что символы Юникод непосредственно индексируемы. Получение -ой кодовой позиции является операцией, занимающей одинаковое время. Напротив, коды с переменной длиной требует последовательного доступа к -ой кодовой позиции. Это делает замену символов в строках UTF-32 простой, для этого используется целое число в качестве индекса, как обычно делается для строк ASCII.

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

Хотя использование неменяющегося числа байт на символ удобно, но не настолько, как кажется. Операция усечения строк реализуется легче в сравнении с UTF-8 и UTF-16. Но это не делает более быстрым нахождение конкретного смещения в строке, так как смещение может вычисляться и для кодировок фиксированного размера. Это не облегчает вычисление отображаемой ширины строки, за исключением ограниченного числа случаев, так как даже символ «фиксированной ширины» может быть получен комбинированием обычного символа с модифицирующим, который не имеет ширины. Например, буква «й» может быть получена из буквы «и» и диакритического знака «крючок над буквой». Сочетание таких знаков означает, что текстовые редакторы не могут рассматривать -битный код как единицу редактирования. Редакторы, которые ограничиваются работой с языками с письмом слева направо и составными символами (англ. Precomposed character), могут использовать символы фиксированного размера. Но такие редакторы вряд ли поддержат символы, лежащие за пределами нулевой (базовой) плоскости кодового пространства и вряд ли смогут работать одинаково хорошо с символами UTF-16.

Порядок байт

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

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

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

Варианты записи

Порядок от старшего к младшему

Порядок от старшего к младшему (англ. big-endian): , запись начинается со старшего и заканчивается младшим. Этот порядок является стандартным для протоколов TCP/IP, он используется в заголовках пакетов данных и во многих протоколах более высокого уровня, разработанных для использования поверх TCP/IP. Поэтому, порядок байт от старшего к младшему часто называют сетевым порядком байт (англ. network byte order). Этот порядок байт используется процессорами IBM 360/370/390, Motorola 68000, SPARC (отсюда третье название — порядок байт Motorola, Motorola byte order).

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

Порядок байт от старшего к младшему применяется во многих форматах файлов — например, PNG, FLV, EBML.

Порядок от младшего к старшему

Порядок от младшего к старшему (англ. little-endian): , запись начинается с младшего и заканчивается старшим. Этот порядок записи принят в памяти персональных компьютеров с x86-процессорами, в связи с чем иногда его называют интеловский порядок байт (по названию фирмы-создателя архитектуры x86).

В противоположность порядку big-endian, соглашение little-endian поддерживают меньше кросс-платформенных протоколов и форматов данных; существенные исключения: USB, конфигурация PCI, таблица разделов GUID, рекомендации FidoNet.

Переключаемый порядок

Многие процессоры могут работать и в порядке от младшего к старшему, и в обратном, например, ARM, PowerPC (но не PowerPC 970), DEC Alpha, MIPS, PA-RISC и IA-64. Обычно порядок байт выбирается программно во время инициализации операционной системы, но может быть выбран и аппаратно перемычками на материнской плате. В этом случае правильнее говорить о порядке байт операционной системы. Переключаемый порядок байт иногда называют англ. bi-endian.

Смешанный порядок

Смешанный порядок байт (англ. middle-endian) иногда используется при работе с числами, длина которых превышает машинное слово. Число представляется последовательностью машинных слов, которые записываются в формате, естественном для данной архитектуры, но сами слова следуют в обратном порядке.

Классический пример middle-endian — представление -байтных целых чисел на -битных процессорах семейства PDP-11 (известен как PDP-endian). Для представления двухбайтных значений (слов) использовался порядок little-endian, но -хбайтное двойное слово записывалось от старшего слова к младшему.

В процессорах VAX и ARM используется смешанное представление для длинных вещественных чисел.

Различия

Endian.png

Существенным достоинством little-endian по сравнению с big-endian порядком записи считается возможность «неявной типизации» целых чисел при чтении меньшего объёма байт (при условии, что читаемое число помещается в диапазон). Так, если в ячейке памяти содержится число , то прочитав его как int16 (два байта) мы получим число , прочитав один байт — число . Однако, это же может считаться и недостатком, потому что провоцирует ошибки потери данных.

Обратно, считается что у little-endian, по сравнению с big-endian есть «неочевидность» значения байт памяти при отладке (последовательность байт (A1, B2, C3, D4) на самом деле значит , для big-endian эта последовательность (A1, B2, C3, D4) читалась бы «естественным» для арабской записи чисел образом: ). Наименее удобным в работе считается middle-endian формат записи; он сохранился только на старых платформах.

Для записи длинных чисел (чисел, длина которых существенно превышает разрядность машины) обычно предпочтительнее порядок слов в числе little-endian (поскольку арифметические операции над длинными числами производятся от младших разрядов к старшим). Порядок байт в слове — обычный для данной архитектуры.

Маркер последовательности байт

Для определения формата представления Юникода в начало текстового файла записывается сигнатура — символ U+FEFF (неразрывный пробел с нулевой шириной), также именуемый маркером последовательности байт (англ. byte order mark (BOM)). Это позволяет различать UTF-16LE и UTF-16BE, поскольку символа U+FFFE не существует.

Bom.png

Представление BOM в кодировках

Кодирование Представление (Шестнадцатеричное)
UTF-8 EF BB BF
UTF-16 (BE) FE FF
UTF-16 (LE) FF FE
UTF-32 (BE) 00 00 FE FF
UTF-32 (LE) FF FE 00 00

В кодировке UTF-8, наличие BOM не является существенным, поскольку, нет альтернативной последовательности байт. Когда BOM используется на страницах или редакторах для контента закодированного в UTF-8, иногда он может представить пробелы или короткие последовательности символов, имеющие странный вид (такие как ). Именно поэтому, при наличии выбора, для совместимости, как правило, лучше упустить BOM в UTF-8 контенте.Однако BOM могут еще встречаться в тексте закодированном в UTF-8, как побочный продукт перекодирования или потому, что он был добавлен редактором. В этом случае BOM часто называют подписью UTF-8.

Когда символ закодирован в UTF-16, его или байта можно упорядочить двумя разными способами (little-endian или big-endian). Изображение справа показывает это. Byte order mark указывает, какой порядок используется, так что приложения могут немедленно расшифровать контент. UTF-16 контент должен всегда начинатся с BOM.

BOM также используется для текста обозначенного как UTF-32. Аналогично UTF-16 существует два варианта четырёхбайтной кодировки — UTF-32BE и UTF-32LE. К сожалению, этот способ не позволяет надёжно различать UTF-16LE и UTF-32LE, поскольку символ U+0000 допускается Юникодом

Проблемы Юникода

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

Примеры

Если записать строку ‘hello мир’ в файл exampleBOM, а затем сделать его hex-дамп, то можно убедиться в том, что разные символы кодируются разным количеством байт. Например, английские буквы,пробел, знаки препинания и пр. кодируются одним байтом, а русские буквы — двумя

Код на python

#!/usr/bin/env python
#coding:utf-8
import codecs
f = open('exampleBOM','w')
b = u'hello мир'
f.write(codecs.BOM_UTF8)
f.write(b.encode('utf-8'))
f.close()

hex-дамп файла exampleBOM

Символ BOM h e l l o Пробел м и р
Код в UNICODE EF BB BF 68 65 6C 6C 6F 20 D0 BC D0 B8 D1 80
Код в UTF-8 11101111 10111011 10111111 01101000 01100101 01101100 01101100 01101111 00100000 11010000 10111100 11010000 10111000 11010001 10000000

См. также

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

Источники информации

  • Wikipedia — таблица ASCII
  • Wikipedia — стандарт UNICODE
  • Wikipedia — Byte order mark
  • Wikipedia — Порядок байтов
  • Wikipedia — Юникод
  • Wikipedia — Windows-1251
  • Wikipedia — UTF-8
  • Wikipedia — UTF-16
  • Wikipedia — UTF-32

Содержание

  1. Windows 1251
  2. Содержание
  3. Таблицы
  4. Кодировка Windows-1251 (синоним CP1251)
  5. Другие варианты
  6. Кодировка CP1251-k (KazWin, казахская кодировка)
  7. Кодировка Windows-1251 (чувашский вариант)
  8. Татарский вариант
  9. Внешние ссылки
  10. Полезное
  11. Смотреть что такое «Windows 1251» в других словарях:
  12. HTML кодировки
  13. Кодировка ISO
  14. Кодировки серии ISO 8859
  15. Для HTML4:
  16. Для HTML5:
  17. Кодировка Windows-1251 (CP1251)
  18. Кодировки стандарта UNICODE

Windows 1251

Windows-1251 — набор символов и кодировка, являющаяся стандартной 8-битной кодировкой для всех русских версий Microsoft Windows. Пользуется довольно большой популярностью. Была создана на базе кодировок, использовавшихся в ранних «самопальных» русификаторах Windows в 1990—1991 гг. совместно представителями «Параграфа», «Диалога» и российского отделения

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

Имеет два недостатка:

Содержание

Таблицы

Нижняя часть таблицы кодировки (латиница) полностью соответствует кодировке Юникоде.

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

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

201A
ѓ
453

201E

2026

2020

2022

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

Другие варианты

(Показаны только отличающиеся строки, поскольку всё остальное совпадает)

Кодировка CP1251-k (KazWin, казахская кодировка)

. .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
8. Ұ
4B0
Ғ
492

201A
ғ
493

201E

2026

2020

2022

20AC

2030
Ө
4E8

2039
Ң
4A2
Қ
49A
Һ
4BA
Ү
4AE
9. ұ
4B1

2018

2019

201C

201D

2022

2013

2014

2122
ө
4E9

203A
ң
4A3
қ
49B
һ
4BB
ү
4AF
A. A0 Ў
40E
ў
45E
Җ
496
¤
A4
Ҳ
4B2
¦
A6
§
A7
Ё
401
©
A9
Є
404
«
AB
¬
AC
­
AD
®
AE
Ї
407
B. °
B0
±
B1
І
406
і
456
ҳ
4B3
µ
B5

B6
·
B7
ё
451

2116
є
454
»
BB
җ
497
Ә
4D8
ә
4D9
ї
457

Кодировка Windows-1251 (чувашский вариант)

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

201A
ѓ
453

201E

2026

2020

2022

20AC

2030
Љ
409

2039
Ӑ
4D0
Ӗ
4D6
Ҫ
4AA
Ӳ
4F2
9. ђ
452

2018

2019

201C

201D

2022

2013

2014

2122
љ
459

203A
ӑ
4D1
ӗ
4D7
ҫ
4AB
ӳ
4F3

Татарский вариант

Эта кодировка была официально принята в Татарстане в 1996 г.

. .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
8. Ә
4D8
Ѓ
403

201A
ѓ
453

201E

2026

2020

2022

20AC

2030
Ө
4E8

2039
Ү
4AE
Җ
496
Ң
4A2
Һ
4BA
9. ә
4D9

2018

2019

201C

201D

2022

2013

2014

2122
ө
4E9

203A
ү
4AF
җ
497
ң
4A3
һ
4BB

Внешние ссылки

Полезное

Смотреть что такое «Windows 1251» в других словарях:

Windows-1251 — (a.k.a. code page CP1251) is a popular 8 bit character encoding, designed to cover languages that use the Cyrillic alphabet such as Russian, Bulgarian, Serbian Cyrillic and other languages. It is the most widely used for encoding the Bulgarian,… … Wikipedia

Windows-1251 — набор символов и кодировка, являющаяся стандартной 8 битной кодировкой для всех русских версий Microsoft Windows. Пользуется довольно большой популярностью. Была создана на базе кодировок, использовавшихся в ранних «самопальных» русификаторах… … Википедия

Windows-1251 — (a.k.a. CP1251) es un popular juego de caracteres de 8 bits, diseñado para cubrir lenguajes que usan el alfabeto cirilico como son el lenguaje Ruso y otros lenguajes. Este es la codifiación más ampliamente usada para codificar Búlgaro, Serbio y… … Wikipedia Español

Windows-1251 — Windows Codepages 874 Thai 932 Japanisch 936 Vereinfachtes Chinesisch 949 Koreanisch 950 Traditionelles Chinesisch 1250 Mitteleuropäisch 1251 Kyrillisch 1252 … Deutsch Wikipedia

Windows (значения) — Windows: Microsoft Windows семейство проприетарных операционных систем корпорации Microsoft, ориентированных на применение графического интерфейса при управлении. Windows (клавиша) клавиша на клавиатурах ПК совместимых компьютеров,… … Википедия

Windows-1252 — ISO 8859 1 Latin 1, Westeuropäisch 2 Latin 2, Mitteleuropäisch 3 Latin 3, Südeuropäisch 4 Latin 4, Baltisch 5 Kyrillisch 6 Arabisch 7 Griechisch 8 … Deutsch Wikipedia

Windows-1252 — ISO/IEC 8859 1 (также известная как ISO 8859 1 и Latin 1) кодовая страница, предназначенная для западноевропейских языков; она базируется на символьном наборе популярных в прошлом терминалов ISO 8859. ISO 8859 1 кодировка, зарегистрированная… … Википедия

Windows code page — Windows code pages are sets of characters or code pages (known as character encodings in other operating systems) used in Microsoft Windows from the 1980s and 1990s. Windows code pages were gradually superseded when Unicode was implemented in… … Wikipedia

Windows Glyph List 4 — (сокр. WGL4, также известен как Общеевропейский набор символов англ. Pan European character set) определённый компанией Майкрософт набор из 652 типографических символов Юникода, призванный помочь разработчикам шрифтов в обеспечении… … Википедия

Windows-1254 — Windows 1254 кодовая страница, используемая Microsoft Windows для представления турецкого языка. Символы с кодами от A0 до FF совместимы с ISO 8859 9. Для современных приложений UTF 8 предпочтительней windows 1254. Таблица кодов Символы с… … Википедия

Источник

HTML кодировки

Чтобы правильно отобразить 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.

Для HTML4:

Для HTML5:

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

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

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

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

. .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F 8. Ђ
402 Ѓ
403
201A ѓ
453
201E
2026
2020
2022
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

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

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

Источник

Конвертер текста в двоичный

Введите текстовую строку ASCII / Unicode и нажмите кнопку « Преобразовать» (например, введите «Пример»,
чтобы получить «01000101 01111000 01100001 01101101 01110000 01101100 01100101»):

Вставить текст или вставить текстовый файл

Кодировка символов (необязательно)

Строка разделителя вывода (необязательно)

Конвертер двоичного кода в текст ►

Как преобразовать текст в двоичный

Преобразование текста в двоичный код ASCII:

  1. Получить характер
  2. Получить десятичный код символа из таблицы ASCII
  3. Преобразовать десятичный байт в двоичный
  4. Продолжить со следующим символом

пример

Преобразуйте текст «Сажать деревья» в двоичный код ASCII:

Решение:

Используйте таблицу ASCII, чтобы получить код ASCII из символа.

«P» = 80 = 2 6 +2 4 = 01010000 2

«l» = 108 = 2 6 +2 5 +2 3 +2 2 = 01101100 2

«a» = 97 = 2 6 +2 5 +2 0 = 01100001 2

Для всех текстовых символов вы должны получить двоичные байты:

«01010000 01101100 01100001 01101110 01110100 00100000 01110100 01110010 01100101 01100101 01110011»

Как преобразовать текст в двоичный?

  1. Получить характер
  2. Получить код символа ASCII из таблицы ASCII
  3. Преобразовать десятичный байт в двоичный
  4. Продолжить со следующим символом

Как использовать преобразователь текста в двоичный?

  1. Вставить текст в текстовое поле ввода.
  2. Выберите тип кодировки символов.
  3. Выберите строку-разделитель вывода.
  4. Нажмите кнопку «Конвертировать».

Как преобразовать английский в двоичный код?

  1. Получить английское письмо
  2. Получить код ASCII английской буквы из таблицы ASCII
  3. Преобразовать десятичный байт в двоичный
  4. Продолжить со следующей английской буквы

Как преобразовать символ «А» в двоичный?

Используйте таблицу ASCII: ‘A’ = 65 10 = 64 + 1 = 2 6 +2 0 = 01000001 2

Как преобразовать символ «0» в двоичный?

Используйте таблицу ASCII: ‘0’ = 48 10 = 32 + 16 = 2 5 +2 4 = 00110000 2

Текст ASCII в шестнадцатеричный, таблица двоичного преобразования

ASCII-
символ
Шестнадцатеричный Двоичный
NUL 00 00000000
SOH 01 00000001
STX 02 00000010
ETX 03 00000011
EOT 04 00000100
ENQ 05 00000101
ACK 06 00000110
БЕЛ 07 00000111
BS 08 00001000
HT 09 00001001
LF 0A 00001010
VT 0B 00001011
FF 0C 00001100
CR 0D 00001101
SO 0E 00001110
SI 0F 00001111
DLE 10 00010000
DC1 11 00010001
DC2 12 00010010
DC3 13 00010011
DC4 14 00010100
НАК 15 00010101
SYN 16 00010110
ETB 17 00010111
CAN 18 00011000
EM 19 00011001
SUB 1A 00011010
ESC 1B 00011011
FS 00011100
GS 1D 00011101
RS 1E 00011110
США 1F 00011111
Космос 20 00100000
! 21 00100001
« 22 00100010
# 23 00100011
$ 24 00100100
% 25 00100101
& 26 00100110
27 00100111
( 28 00101000
) 29 00101001
* 2A 00101010
+ 2B 00101011
, 2C 00101100
2D 00101101
. 2E 00101110
/ 2F 00101111
0 30 00110000
1 31 00110001
2 32 00110010
3 33 00110011
4 34 00110100
5 35 00110101
6 36 00110110
7 37 00110111
8 38 00111000
9 39 00111001
: 3A 00111010
; 3B 00111011
< 3C 00111100
= 3D 00111101
/ 3E 00111110
? 3F 00111111
@ 40 01000000
А 41 01000001
B 42 01000010
C 43 01000011
D 44 01000100
E 45 01000101
F 46 01000110
G 47 01000111
H 48 01001000
Я 49 01001001
J 4A 01001010
K 4B 01001011
L 4C 01001100
M 4D 01001101
N 4E 01001110
O 4F 01001111
P 50 01010000
Q 51 01010001
R 52 01010010
S 53 01010011
Т 54 01010100
U 55 01010101
V 56 01010110
W 57 01010111
X 58 01011000
Y 59 01011001
Z 5A 01011010
[ 5B 01011011
5C 01011100
] 5D 01011101
^ 5E 01011110
_ 5F 01011111
` 60 01100000
а 61 01100001
б 62 01100010
c 63 01100011
d 64 01100100
е 65 01100101
f 66 01100110
г 67 01100111
h 68 01101000
я 69 01101001
j 6A 01101010
k 6B 01101011
л 6C 01101100
м 6D 01101101
п 6E 01101110
о 6F 01101111
p 70 01110000
q 71 01110001
г 72 01110010
с 73 01110011
т 74 01110100
u 75 01110101
v 76 01110110
w 77 01110111
х 78 01111000
y 79 01111001
z 7A 01111010
{ 7B 01111011
| 7C 01111100
} 7D 01111101
~ 7E 01111110
DEL 7F 01111111

Конвертер двоичного кода в текст ►


Смотрите также

  • Конвертер ASCII в шестнадцатеричный
  • Конвертер двоичного кода в ASCII
  • Конвертер шестнадцатеричного кода в ASCII
  • Конвертер ASCII, Hex, двоичного, десятичного, Base64
  • Декодер Base64
  • Кодировщик Base64
  • Таблица ASCII
  • Символы Unicode

Добавил:

Upload

Опубликованный материал нарушает ваши авторские права? Сообщите нам.

Вуз:

Предмет:

Файл:

Скачиваний:

85

Добавлен:

10.06.2015

Размер:

290.82 Кб

Скачать

54

Таблица СР-1251

__________________________________________________________________________________

.

Приложение 4.2

Таблица СР-1251

Дес.

Двоичная

Символ

0

00000000

Null

1

00000001

Начало заголовка

2

00000010

Начало текста

3

00000011

Конец текста

4

00000100

Конец передачи

5

00000101

Запрос

6

00000110

Подтверждение приема

7

00000111

Звуковой сигнал

8

00001000

Возвращение, забой

9

00001001

Горизонтальная
табуляция

10

00001010

Перевод строки

11

00001011

Вертикальная
табуляция

12

00001100

Перевод страницы

13

00001101

Возврат каретки

14

00001110

Верхний регистр

15

00001111

Нижний регистр

16

00010000

Отключение от линии

17

00010001

Управление 1

18

00010010

Управление 2

19

00010011

Управление 3

20

00010100

Управление 4

21

00010101

Нет подтверждения

22

00010110

Синхронизация

23

00010111

Конец передающего
блока

24

00011000

Отмена

25

00011001

Конец носителя

26

00011010

Замена

27

00011011

Прерывание

28

00011100

Разделитель файлов

29

00011101

Разделитель групп

30

00011110

Разделитель записей

31

00011111

Разделитель элементов

32

00100000

Пробел

Дес.

Двоичная

Символ

33

00100001

!

34

00100010

35

00100011

#

36

00100100

$

37

00100101

%

38

00100110

&

39

00100111

40

00101000

(

41

00101001

)

42

00101010

*

43

00101011

+

44

00101100

,

45

00101101

46

00101110

.

47

00101111

/

48

00110000

0

49

00110001

1

50

00110010

2

51

00110011

3

52

00110100

4

53

00110101

5

54

00110110

6

55

00110111

7

56

00111000

8

57

00111001

9

58

00111010

:

59

00111011

;

60

00111100

<

61

00111101

=

62

00111110

>

63

00111111

?

64

01000000

@

65

01000001

A

66

01000010

B

67

01000011

C

68

01000100

D

Дес.

Двоичная

Символ

69

01000101

E

70

01000110

F

71

01000111

G

72

01001000

H

73

01001001

I

74

01001010

J

75

01001011

K

76

01001100

L

77

01001101

M

78

01001110

N

79

01001111

O

80

01010000

P

81

01010001

Q

82

01010010

R

83

01010011

S

84

01010100

T

85

01010101

U

86

01010110

V

87

01010111

W

88

01011000

X

89

01011001

Y

90

01011010

Z

91

01011011

[

92

01011100

93

01011101

]

94

01011110

^

95

01011111

_

96

01100000

Тупое
ударение

97

01100001

a

98

01100010

b

99

01100011

c

100

01100100

d

101

01100101

e

102

01100110

f

103

01100111

g

104

01101000

h

Дес.

Двоичная

Символ

105

01101001

i

106

01101010

j

107

01101011

k

108

01101100

l

109

01101101

m

110

01101110

n

111

01101111

o

112

01110000

p

113

01110001

q

114

01110010

r

115

01110011

s

116

01110100

t

117

01110101

u

118

01110110

v

119

01110111

w

120

01111000

x

121

01111001

y

122

01111010

z

123

01111011

{

124

01111100

|

125

01111101

}

126

01111110

~

127

01111111

Удаление

128

10000000

Большая
Кирил. Дже

129

10000001

Большая
Кирил. Ге

130

10000010

Нижний
апостроф

131

10000011

Малая
Кирил.ге

132

10000100

Двойные
нижние кавычки

133

10000101

134

10000110

Начало
выделенных данных

135

10000111

Конец
выделенных данных

136

10001000

Знак Евро

137

10001001

Знак промилле

138

10001010

Большая
Кирил. Ле

139

10001011

<

140

10001100

Большая
Кирил. Не

Дес.

Двоичная

Символ

141

10001101

Большая
Кирил. Ше

142

10001110

Большая
Кирил. Же

143

10001111

Малая Кирил.
Де

144

10010000

Левая
одиночная кавычка

145

10010001

Правая
одиночная кавычка

146

10010010

Правая
одиночная кавычка

147

10010011

Левые кавычки

148

10010100

Правые
кавычки

149

10010101

Ожидание
сообщения

150

10010110

Короткое
тире

151

10010111

Длинное
тире

152

10011000

Не определен

153

10011001

Торговая
марка

154

10011010

Малая Кирил.
Ле

155

10011011

>

156

10011100

Малая Кирил.
Не

157

10011101

Малая Кирил.
Ке

158

10011110

Малая Кирил.
Ше

159

10011111

Малая Кирил.
Же

160

10100000

Неразрывный
пробел

161

10100001

Большая
Кирил. У кратн.

162

10100010

Малая Кирил.
У кратн.

163

10100011

Большая
Кирил. Йэ

164

10100100

Валюта

165

10100101

Большая
Кирил. Гэ

166

10100110

Разорванная
черта

167

10100111

§

168

10101000

Ё

169

10101001

©

170

10101010

Большая
кирил. Е

171

10101011

«

172

10101100

Угловое
тире

173

10101101

Мягкий
перенос

174

10101110

®

175

10101111

Большая
кирил. I”

176

10110000

Градус

Дес.

Двоичная

Символ

177

10110001

±

178

10110010

Большая
кирил. I

179

10110011

i

180

10110100

Малая кирил.
Гэ

181

10110101

Знак микро
(малая мю)

182

10110110

183

10110111

Срединная
точка

184

10111000

ё

185

10111001

186

10111010

Малая кирил.
е

187

10111011

»

188

10111100

Малая кирил.
Йэ

189

10111101

Большая
кирил. Зэ

190

10111110

Малая кирил.
зэ

191

10111111

Малая кирил.
I”

192

11000000

А

193

11000001

Б

194

11000010

В

195

11000011

Г

196

11000100

Д

197

11000101

Е

198

11000110

Ж

199

11000111

З

200

11001000

И

201

11001001

Й

202

11001010

К

203

11001011

Л

204

11001100

М

205

11001101

Н

206

11001110

О

207

11001111

П

208

11010000

Р

209

11010001

С

210

11010010

Т

211

11010011

У

212

11010100

Ф

Дес.

Двоичная

Символ

213

11010101

Х

214

11010110

Ц

215

11010111

Ч

216

11011000

Ш

217

11011001

Щ

218

11011010

Ъ

219

11011011

Ы

220

11011100

Ь

221

11011101

Э

222

11011110

Ю

223

11011111

Я

224

11100000

а

225

11100001

б

226

11100010

в

227

11100011

г

228

11100100

д

229

11100101

е

230

11100110

ж

231

11100111

з

232

11101000

и

233

11101001

й

234

11101010

к

235

11101011

л

236

11101100

м

237

11101101

н

238

11101110

о

239

11101111

п

240

11110000

р

241

11110001

с

242

11110010

т

243

11110011

у

244

11110100

ф

245

11110101

х

246

11110110

ц

247

11110111

ч

248

11111000

ш

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #

    02.08.2019369.66 Кб836.doc

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Понравилась статья? Поделить с друзьями:
  • Команда git clone windows не работает
  • Команда ftp в командной строке windows
  • Кодировка utf 8 в windows 1251 онлайн
  • Команда for в командной строке windows
  • Кодировка microsoft windows обозначается как ср1251