Содержание

ASCII | это… Что такое ASCII?

У этого термина существуют и другие значения, см. ASCII (значения).

ASCII

ASCII (англ. American Standard Code for Information Interchange) — американская стандартная кодировочная таблица для печатных символов и некоторых специальных кодов. В американском варианте английского языка произносится [э́ски], тогда как в Великобритании чаще произносится [а́ски]; по-русски произносится также [а́ски] или [аски́].

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

1. Это тратит впустую много ценного пространства!
  • Многие старые компьютеры интерпретируют восемь нулей подряд (ноль) как конец строки символов. Таким образом, эти компьютеры не будут отправлять символы, следующие за восемью нулями подряд (они не будут отправлять букву A, если она представлена ​​как 00000000000000000000000000000000000001).
  • Метод кодирования Unicode UTF-8 решает следующие проблемы:
    — до символа с номером 128 используется обычное значение ASCII (например, A равно 01)
    — для любого символа за пределами 128 UTF-8 разделяет код в два байта и добавление «110» к началу первого байта, чтобы показать, что это начальный байт, и «10» к началу второго байта, чтобы показать, что он следует за первым байтом.

    Итак, для каждого символа после числа 128 у вас есть два байта:

     [110xxxxx] [10xxxxxx] 

    И вы просто заполните двоичный код для числа между ними:

     [11] [
    01] (это число 325 → 00101)

    Это работает для первых 2048 символов. Для символов сверх этого добавляется еще одна «1» в начале первого байта, а также используется третий байт:

     [1110xxxx] [10xxxxxx] [10xxxxxx] 

    Это дает вам 16 пробелов для двоичного кода. Таким образом, UTF-8 достигает четырех байтов:

     [11110xxx] [10xxxxxx] [10xxxxxx] [10xxxxxx] 

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

    Занятия в классе

    Есть много занимательных занятий по обучению кодированию символов. Мы включили два упражнения ниже, чтобы вы могли попробовать их в своем классе. Какие у вас есть главные советы по обучению кодированию символов? Поделитесь ими в комментариях!

    • Перевод секретных сообщений : разместить короткое секретное сообщение в ASCII в разделе комментариев и перевести или ответить на ASCII-сообщения других участников

    • Бинарные браслеты : создавайте браслеты, используя разноцветные бусины для обозначения единиц и нулей и написания инициала или имени в ASCII.

    Эта статья взята из бесплатного онлайн-ресурса

    Представление данных в вычислениях: оживление данных

    Создано

    Присоединяйся сейчас

    Наша цель — изменить доступ к образованию.

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

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

    Узнайте больше о том, как FutureLearn меняет доступ к образованию

    Вставка латинских символов и символов ASCII или Unicode

    Excel для Microsoft 365 Outlook для Microsoft 365 PowerPoint для Microsoft 365 Publisher для Microsoft 365 Excel 2021 Outlook 2021 PowerPoint 2021 Publisher 2021 Visio Professional 2021 Visio Standard 2021 OneNote 2021 Excel 2019Outlook 2019 PowerPoint 2019 Publisher 2019 Visio Professional 2019 Visio Standard 2019 Excel 2016 Outlook 2016 PowerPoint 2016 OneNote 2016 Publisher 2016 Visio Professional 2016 Visio 2016 Excel 2013 Outlook 2013 PowerPoint 2013 OneNote 2013 Publisher 2013 Visio 2013 Outlook 2010 PowerPoint 2010 Publisher 2010 2010 Visio 2010 Visio Standard 2010 Больше. ..Меньше

    Кодировка символов

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

    В этой статье

    • Вставка символа ASCII или Unicode в документ

    • Коды символов общих символов

    • Общие коды диакритических символов

    • Общие коды символов лигатуры

    • Непечатаемые управляющие символы ASCII

    • Дополнительная информация

    Вставка символа ASCII или Unicode в документ

    Если вам нужно ввести только несколько специальных символов или символов, вы можете использовать карту символов или использовать сочетания клавиш. См. приведенные ниже таблицы или список символов ASCII в разделе «Сочетания клавиш для международных символов».

    Примечания:

    • Многие языки содержат символы, которые не могут быть объединены в 256-символьный расширенный набор ACSII. Таким образом, существуют варианты ASCII и Unicode, охватывающие региональные символы и символы, см. Таблицы кодов символов Unicode по сценариям.

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

    Вставка символов ASCII

    Чтобы вставить символ ASCII, нажмите и удерживайте клавишу ALT при вводе кода символа. Например, чтобы вставить символ градуса (º), нажмите и удерживайте клавишу ALT, одновременно набирая 0176 на цифровой клавиатуре.

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

    Вставка символов Unicode

    Чтобы вставить символ Unicode, введите код символа, нажмите ALT, а затем нажмите X. Например, чтобы ввести символ доллара ($), введите 0024, нажмите ALT, а затем нажмите X. Дополнительные коды символов Unicode см. Таблицы кодов символов Unicode по сценарию.

    Важно: Некоторые программы Microsoft Office, такие как PowerPoint и InfoPath, не могут преобразовывать коды Unicode в символы. Если вам нужен символ Unicode и вы используете одну из программ, не поддерживающих символы Unicode, используйте карту символов, чтобы ввести нужные вам символы.

    Примечания:

    • Если ALT+X преобразует неправильный код символа в Unicode, выберите правильный код символа, прежде чем нажимать ALT+X.

    • В качестве альтернативы перед правильным кодом символа можно поставить текст «U+». Например, ввод «1U+B5» и нажатие ALT+X всегда возвращает текст «1µ», а ввод «1B5» и нажатие ALT+X возвращает текст «Ƶ».

    Использование карты символов

    Карта символов

    — это программа, встроенная в Microsoft Windows, которая позволяет просматривать символы, доступные в выбранном шрифте.

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

    • В Windows 10: Введите «персонаж» в поле поиска на панели задач и выберите «Карта символов» в результатах.

    • В Windows 8: Найдите слово «персонаж» на начальном экране и выберите «Карта символов» в результатах.

    • В Windows 7: Щелкните Пуск , выберите Все программы , выберите Аксессуары , выберите Системные инструменты , а затем щелкните Карта символов .

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

    Верх страницы

    Коды символов общих символов

    Для получения дополнительных символов см. карту символов, установленную на вашем компьютере, коды символов ASCII или таблицы кодов символов Unicode по сценарию.

    Содержание

    • 1 Наложение символов
    • 2 Национальные варианты ASCII
    • 3 Кодировка
    • 4 Управляющие символы
    • 5 Структурные свойства таблицы
    • 6 Представление ASCII в ЭВМ
    • 7 Примечание
    • 8 См. ` { | } ~. В дополнение к этому, на месте # может быть размещён £, а на месте $ — ¤. Такая система хорошо подходит для европейских языков, где нужны лишь несколько дополнительных символов. Вариант ASCII без национальных символов называется US-ASCII, или «International Reference Version».

      Для некоторых языков с нелатинской письменностью (русского, греческого, арабского, иврита) существовали более радикальные модификации ASCII. Одним из вариантов был отказ от строчных латинских букв — на их месте размещались национальные символы (для русского и греческого — только заглавные буквы). Другой вариант — переключение между US-ASCII и национальным вариантом «на лету» с помощью символов SO (Shift Out) и SI (Shift In) — в этом случае в национальном варианте можно полностью устранить латинские буквы и занять всё пространство под свои символы. См. также КОИ-7.

      Впоследствии оказалось удобнее использовать 8-битные кодировки (кодовые страницы), где нижнюю половину кодовой таблицы (0—127) занимают символы US-ASCII, а верхнюю (128—255) — дополнительные символы, включая набор национальных символов.

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

      В Юникоде первые 128 символов тоже совпадают с соответствующими символами US-ASCII.

      Кодировка

        .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. _
      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

      Символ 0x5e в первой версии стандарта ASCII (1963) соответствовал стрелке вверх, а символ 0x5f — стрелке влево. Стандарт ECMA-6 (1965) заменил их на знак вставки (используемый также в роли циркумфлекса) и нижнюю черту (подчёркивание) соответственно.

      Управляющие символы

      Основная статья: Управляющие символы

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

      (После названия каждого символа указан его 16-ричный код)

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

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

      • Цифры 0—9 представляются своими двоичными значениями (например, 5=01012), перед которыми стоит 00112. Таким образом, двоично-десятичные числа (BCD) превращаются в ASCII-строку с помощью простого добавления слева 00112 к каждому двоично-десятичному полубайту.
      • Буквы A-Z верхнего и нижнего регистров различаются в своём представлении только одним битом, что упрощает преобразование регистра и проверку на диапазон. Буквы представляются своими порядковыми номерами в алфавите, записанными в двоичной системе счисления, перед которыми стоит 1002 (для букв верхнего регистра) или 1102 (для букв нижнего регистра).

      Представление ASCII в ЭВМ

      На подавляющем большинстве современных компьютеров минимально адресуемая единица памяти — 8-битный байт, поэтому там используются 8-битные, а не 7-битные символы. Обычно символ ASCII расширяют до 8 бит, просто добавляя один нулевой бит в качестве старшего.

      На компьютерах системы IBM/360, однако, в случае использования ASCII применялся другой метод: 6-й бит (если считать самый младший бит первым) перемещается в 7-й, а бывший 7-й «раздваивается» и копируется и в 8-й бит, и в 6-й. Получается такая таблица [1]:

        .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
      0. NUL SOM EOA EOM EQT WRU RU BELL BKSP HT LF VT FF CR SO SI
      1. DC0 DC1 DC2 DC3 DC4 ERR SYNC LEM S0 S1 S2 S3 S4 S5 S6 S7
      2.                                
      3.                                
      4. BLANK  ! « # $  % & ( ) * + , . /
      5. 0 1 2 3 4 5 6 7 8 9  :  ; < = >  ?
      6.                                
      7.                                
      8.                                
      9.                                
      A. @ A B C D E F G H I J K L M N O
      B. P Q R S T U V W X Y Z [ \ ]
      C.                                
      D.                                
      E.   a b c d e f g h i j k l m n o
      F. p q r s t u v w x y z       ESC DEL

      На тех компьютерах, где минимально адресуемой единицей памяти было 36-битное слово, поначалу использовали 6-битные символы (1 слово = 6 символов). После перехода на ASCII на таких компьютерах в одном слове стали размещать либо 5 семибитных символов (1 бит оставался лишним), либо 4 девятибитных символа.

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

      Escape

      27

      F1

      112

      F2

      113

      F3

      114

      F4

      115

      F5

      116

      F6

      117

      F7

      118

      F8

      119

      F9

      120

      F10

      121

      F11

      122

      F12

      123

      Print Screen

      Scroll Lock

      145

      Pause

      19

      192

      1

      49

      2

      50

      3

      51

      4

      52

      5

      53

      6

      54

      7

      55

      8

      56

      9

      57

      0

      48

      189

      =+

      187

      Back Space

      8

      Insert

      45

      Home

      36

      Page Up

      33

      Num Lock

      144

      / доп.

      111

      * доп.

      106

      + доп.

      107

      Tab

      9

      Q

      81

      W

      87

      E

      69

      R

      82

      T

      84

      Y

      89

      U

      85

      I

      73

      O

      79

      P

      80

      [

      219

      ]

      221

      Delete

      46

      End

      35

      Page Down

      34

      7 доп.

      109

      8 доп.

      108

      9 доп.

      105

      Caps Lock

      20

      A

      65

      S

      83

      D

      68

      F

      70

      G

      71

      H

      72

      J

      74

      K

      75

      L

      76

      186

      ‘э

      222

      Enter

      13

      4 доп.

      100

      5 доп.

      101

      6 доп.

      102

      Enter доп.

      13

      Shift

      16

      Z

      90

      X

      88

      C

      67

      V

      86

      B

      66

      N

      78

      M

      77

      ,<

      188

      .>

      190

      /

      191

      Shift

      16

      \|

      220

      Up

      38

      1 доп.

      97

      2 доп.

      98

      3 доп.

      99

      Ctrl

      17

      win

      Alt

      18

      Space Bar

      32

      Alt

      18

      win

      list

      Ctrl

      17

      Left

      37

      Down

      40

      Right

      39

      Ins/0

      45/96

      Del/.

      46/110

      Примечание

      1. G. M. Amdahl, G. A. Blaauw, F. P. Brooks, Jr. Architecture of the IBM System/360, 1964

      См. также

      • Переносимый набор символов
      • Управляющие символы
      • EBCDIC
      • ISCII
      • VISCII
      • YUSCII
      • Юникод
      • ASCII art
      • КОИ-8

      Ссылки

      • Цветная таблица ASCII
      • Standard ECMA-6: 7-bit Coded Character Set, 6th edition  (англ.). Ecma International (December 1991). Архивировано из первоисточника 23 августа 2011.
      • Tom Jennings An annotated history of some character codes or ASCII: American Standard Code for Information Infiltration  (англ.) (1999-09-16 — 2004-10-29). Архивировано из первоисточника 23 августа 2011.
      • ASCII Chart and Other Resources  (англ.). JimPrice.Com.
      Кодировки символов
      Основы → алфавит • текст ( файл • данные ) • набор символов • конверсия
      Исторические кодировки → Докомп. : семафорная (Макарова) • Морзе • Бодо • МТК-2 Комп.: 6 бит • УПП • RADIX-50 • EBCDIC ( ДКОИ-8 ) • КОИ-7 • ISO 646
      совре-
      менное
      8-битное
      представ-
      ление
      символы → ASCII ( управляющие • печатные ) не-ASCII ( псевдографика )
      8бит. код.стр. Разные →   Кириллица: КОИ-8 • ГОСТ 19768-87 • MacCyrillic
      ISO 8859 → 1(лат.) 2 3 4 5(кир.) 6 7 8 9 10 11 12 13 14 15(€) 16
      Windows → 1250 1251(кир.) 1252 1253 1254 1255 1256 1257 1258 | WGL4
      IBM&DOS → 437 • 850 • 852 • 855 • 866 «альт.» • ( МИК ) • ( НИИ ЭВМ )
      Много-
      байтные
      Традиционные → DBCS ( GB2312 ) • HTML
      Unicode → UTF-16 • UTF-8 • список символов ( кириллица )
      Связанные
      темы →
      интерфейс пользователя • раскладка клавиатуры • локаль • перевод строки • шрифт • кракозябры • транслит • нестандартные шрифты • текст как изображение Утилиты: iconv • recode

      ASCII | это.

      .. Что такое ASCII?

      У этого термина существуют и другие значения, см. ASCII (значения).

      ASCII

      ASCII (англ. American Standard Code for Information Interchange) — американская стандартная кодировочная таблица для печатных символов и некоторых специальных кодов. В американском варианте английского языка произносится [э́ски], тогда как в Великобритании чаще произносится [а́ски]; по-русски произносится также [а́ски] или [аски́].

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

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

      55,7

      Например, 65 соответствует A в верхнем регистре. j в нижнем регистре равно 106 или 1

      в двоичном формате. Или 0 равно 33, что кодирует символ восклицательного знака. Вот как hello кодируется в двоичный код с использованием ASCII. [H 0 E 1 L 0 L 0 O 1. Для всего, что выше 127, UTF8 разделяет код на два байта. Он добавляет 110 к первому байту и 10 ко второму байту. Затем вы просто заполняете двоичный код для промежуточных битов. Например, число 325 равно 00101, которое вставляется вот так. Это работает для первых 4,096 символов. После этого добавляется еще один байт.

      268.2

      И еще 1 добавляется в начале первого байта, вот так. Это дает вам 16 дополнительных битов для вашего двоичного кода. На самом деле вы можете получить до 7 байтов данных, которые выглядят так. Таким образом, UTF8 позволяет избежать проблемы с 8 нулями. И он обратно совместим со старой системой ASCII. И это краткое изложение ASCII и UTF8, двух важных стандартов, которые определяют, как символы кодируются из единиц и нулей в цифровой текст, который вы просматриваете каждый день.

      Два стандарта кодирования символов определяют, как символы декодируются из единиц и нулей в текст, который вы видите на экране прямо сейчас, и в различные языки, просматриваемые каждый день в World Wide Web. Этими двумя стандартами кодирования являются ASCII и Unicode.

      ASCII

      Американский стандартный код для обмена информацией (ASCII) был разработан для создания международного стандарта кодирования латинского алфавита. В 1963 году был принят ASCII, чтобы информацию можно было интерпретировать между компьютерами; представляющие строчные и заглавные буквы, цифры, символы и некоторые команды. Поскольку ASCII кодируется с использованием единиц и нулей, системы счисления с основанием 2, он использует семь битов. Семь бит позволяют 2 в степени 7 = 128 возможных комбинаций цифр для кодирования символа. Таким образом,

      ASCII обеспечил возможность кодирования 128 важных символов:

      Как работает кодировка ASCII

      • Вы уже знаете, как преобразовывать десятичные числа в двоичные
      • Теперь вам нужно превратить буквы в двоичные числа
      • Каждому символу соответствует десятичное число (например, A → 65)
      • ASCII использует 7 бит
      • Мы используем первые 7 столбцов таблицы преобразования для создания 128 различных чисел (от 0 до 127)

      Например, 1 дает нам число 65 ( 64 + 1 ), которое соответствует букве «А».

      Содержание

      • 1 Наложение символов
      • 2 Национальные варианты ASCII
      • 3 Кодировка
      • 4 Управляющие символы
      • 5 Структурные свойства таблицы
      • 6 Представление ASCII в ЭВМ
      • 7 Примечание
      • 8 См. ` { | } ~. В дополнение к этому, на месте # может быть размещён £, а на месте $ — ¤. Такая система хорошо подходит для европейских языков, где нужны лишь несколько дополнительных символов. Вариант ASCII без национальных символов называется US-ASCII, или «International Reference Version».

        Для некоторых языков с нелатинской письменностью (русского, греческого, арабского, иврита) существовали более радикальные модификации ASCII. Одним из вариантов был отказ от строчных латинских букв — на их месте размещались национальные символы (для русского и греческого — только заглавные буквы). Другой вариант — переключение между US-ASCII и национальным вариантом «на лету» с помощью символов SO (Shift Out) и SI (Shift In) — в этом случае в национальном варианте можно полностью устранить латинские буквы и занять всё пространство под свои символы. См. также КОИ-7.

        Впоследствии оказалось удобнее использовать 8-битные кодировки (кодовые страницы), где нижнюю половину кодовой таблицы (0—127) занимают символы US-ASCII, а верхнюю (128—255) — дополнительные символы, включая набор национальных символов. Таким образом, верхняя половина таблицы ASCII до повсеместного внедрения Юникода активно использовалась для представления локализированных символов, букв местного языка. Отсутствие единого стандарта размещения кириллических символов в таблице ASCII доставляло множество проблем с кодировками (КОИ-8, Windows-1251 и другие). Другие языки с нелатинской письменностью тоже страдали из-за наличия нескольких разных кодировок.

        В Юникоде первые 128 символов тоже совпадают с соответствующими символами US-ASCII.

        Кодировка

          .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. _
        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

        Символ 0x5e в первой версии стандарта ASCII (1963) соответствовал стрелке вверх, а символ 0x5f — стрелке влево. Стандарт ECMA-6 (1965) заменил их на знак вставки (используемый также в роли циркумфлекса) и нижнюю черту (подчёркивание) соответственно.

        Управляющие символы

        Основная статья: Управляющие символы

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

        (После названия каждого символа указан его 16-ричный код)

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

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

        • Цифры 0—9 представляются своими двоичными значениями (например, 5=01012), перед которыми стоит 00112. Таким образом, двоично-десятичные числа (BCD) превращаются в ASCII-строку с помощью простого добавления слева 00112 к каждому двоично-десятичному полубайту.
        • Буквы A-Z верхнего и нижнего регистров различаются в своём представлении только одним битом, что упрощает преобразование регистра и проверку на диапазон. Буквы представляются своими порядковыми номерами в алфавите, записанными в двоичной системе счисления, перед которыми стоит 1002 (для букв верхнего регистра) или 1102 (для букв нижнего регистра).

        Представление ASCII в ЭВМ

        На подавляющем большинстве современных компьютеров минимально адресуемая единица памяти — 8-битный байт, поэтому там используются 8-битные, а не 7-битные символы. Обычно символ ASCII расширяют до 8 бит, просто добавляя один нулевой бит в качестве старшего.

        На компьютерах системы IBM/360, однако, в случае использования ASCII применялся другой метод: 6-й бит (если считать самый младший бит первым) перемещается в 7-й, а бывший 7-й «раздваивается» и копируется и в 8-й бит, и в 6-й. Получается такая таблица [1]:

          .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
        0. NUL SOM EOA EOM EQT WRU RU BELL BKSP HT LF VT FF CR SO SI
        1. DC0 DC1 DC2 DC3 DC4 ERR SYNC LEM S0 S1 S2 S3 S4 S5 S6 S7
        2.                                
        3.                                
        4. BLANK  ! « # $  % & ( ) * + , . /
        5. 0 1 2 3 4 5 6 7 8 9  :  ; < = >  ?
        6.                                
        7.                                
        8.                                
        9.                                
        A. @ A B C D E F G H I J K L M N O
        B. P Q R S T U V W X Y Z [ \ ]
        C.                                
        D.                                
        E.   a b c d e f g h i j k l m n o
        F. p q r s t u v w x y z       ESC DEL

        На тех компьютерах, где минимально адресуемой единицей памяти было 36-битное слово, поначалу использовали 6-битные символы (1 слово = 6 символов). После перехода на ASCII на таких компьютерах в одном слове стали размещать либо 5 семибитных символов (1 бит оставался лишним), либо 4 девятибитных символа.

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

        Escape

        27

        F1

        112

        F2

        113

        F3

        114

        F4

        115

        F5

        116

        F6

        117

        F7

        118

        F8

        119

        F9

        120

        F10

        121

        F11

        122

        F12

        123

        Print Screen

        Scroll Lock

        145

        Pause

        19

        192

        1

        49

        2

        50

        3

        51

        4

        52

        5

        53

        6

        54

        7

        55

        8

        56

        9

        57

        0

        48

        189

        =+

        187

        Back Space

        8

        Insert

        45

        Home

        36

        Page Up

        33

        Num Lock

        144

        / доп.

        111

        * доп.

        106

        + доп.

        107

        Tab

        9

        Q

        81

        W

        87

        E

        69

        R

        82

        T

        84

        Y

        89

        U

        85

        I

        73

        O

        79

        P

        80

        [

        219

        ]

        221

        Delete

        46

        End

        35

        Page Down

        34

        7 доп.

        109

        8 доп.

        108

        9 доп.

        105

        Caps Lock

        20

        A

        65

        S

        83

        D

        68

        F

        70

        G

        71

        H

        72

        J

        74

        K

        75

        L

        76

        186

        ‘э

        222

        Enter

        13

        4 доп.

        100

        5 доп.

        101

        6 доп.

        102

        Enter доп.

        13

        Shift

        16

        Z

        90

        X

        88

        C

        67

        V

        86

        B

        66

        N

        78

        M

        77

        ,<

        188

        .>

        190

        /

        191

        Shift

        16

        \|

        220

        Up

        38

        1 доп.

        97

        2 доп.

        98

        3 доп.

        99

        Ctrl

        17

        win

        Alt

        18

        Space Bar

        32

        Alt

        18

        win

        list

        Ctrl

        17

        Left

        37

        Down

        40

        Right

        39

        Ins/0

        45/96

        Del/.

        46/110

        Примечание

        1. G. M. Amdahl, G. A. Blaauw, F. P. Brooks, Jr. Architecture of the IBM System/360, 1964

        См. также

        • Переносимый набор символов
        • Управляющие символы
        • EBCDIC
        • ISCII
        • VISCII
        • YUSCII
        • Юникод
        • ASCII art
        • КОИ-8

        Ссылки

        • Цветная таблица ASCII
        • Standard ECMA-6: 7-bit Coded Character Set, 6th edition  (англ.). Ecma International (December 1991). Архивировано из первоисточника 23 августа 2011.
        • Tom Jennings An annotated history of some character codes or ASCII: American Standard Code for Information Infiltration  (англ.) (1999-09-16 — 2004-10-29). Архивировано из первоисточника 23 августа 2011.
        • ASCII Chart and Other Resources  (англ.). JimPrice.Com.
        Кодировки символов
        Основы → алфавит • текст ( файл • данные ) • набор символов • конверсия
        Исторические кодировки → Докомп. : семафорная (Макарова) • Морзе • Бодо • МТК-2 Комп.: 6 бит • УПП • RADIX-50 • EBCDIC ( ДКОИ-8 ) • КОИ-7 • ISO 646
        совре-
        менное
        8-битное
        представ-
        ление
        символы → ASCII ( управляющие • печатные ) не-ASCII ( псевдографика )
        8бит. код.стр. Разные →   Кириллица: КОИ-8 • ГОСТ 19768-87 • MacCyrillic
        ISO 8859 → 1(лат.) 2 3 4 5(кир.) 6 7 8 9 10 11 12 13 14 15(€) 16
        Windows → 1250 1251(кир.) 1252 1253 1254 1255 1256 1257 1258 | WGL4
        IBM&DOS → 437 • 850 • 852 • 855 • 866 «альт.» • ( МИК ) • ( НИИ ЭВМ )
        Много-
        байтные
        Традиционные → DBCS ( GB2312 ) • HTML
        Unicode → UTF-16 • UTF-8 • список символов ( кириллица )
        Связанные
        темы →
        интерфейс пользователя • раскладка клавиатуры • локаль • перевод строки • шрифт • кракозябры • транслит • нестандартные шрифты • текст как изображение Утилиты: iconv • recode

        ASCII | это.

        .. Что такое ASCII?

        У этого термина существуют и другие значения, см. ASCII (значения).

        ASCII

        ASCII (англ. American Standard Code for Information Interchange) — американская стандартная кодировочная таблица для печатных символов и некоторых специальных кодов. В американском варианте английского языка произносится [э́ски], тогда как в Великобритании чаще произносится [а́ски]; по-русски произносится также [а́ски] или [аски́].

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

        1 в двоичном формате), коды символов выше этого будет интерпретироваться по-разному в зависимости от набора символов. Хотя мы могли бы неофициально ссылаться на «коды ASCII», следующие 8-битные коды символов не являются частью ASCII.
      • Если явно не указан набор символов, браузеры и другое программное обеспечение должны вернуться к настройкам по умолчанию, таким как Международные настройки для рабочего стола человека, просматривающего страницу, или любые настройки по умолчанию, встроенные в приложение, что может дать непредсказуемые результаты.
      • UTF-8 — это стандарт кодировки символов, согласно которому первые 128 символы (0-127) представлены одним байтом (так же, как классический ASCII), а более высокие коды представлены несколькими байтами.
      • Не все помнят его использовать.
      • Даже если они есть, не каждый шрифт содержит все возможные символы. Поэтому символ или многобайтовый символ может быть правильно кодируется и распознается браузером, но не отображается в Verdana.
      • Эта страница указывает кодировку utf-8 в заголовке HTML, чтобы дать браузерам некоторую подсказку, однако это не означает, что для таких символов, как #129, существует согласованное соглашение об отображении. Символы в диапазоне от 128 до 158 особенно ненадежны.
      • Содержание

        • 1 Наложение символов
        • 2 Национальные варианты ASCII
        • 3 Кодировка
        • 4 Управляющие символы
        • 5 Структурные свойства таблицы
        • 6 Представление ASCII в ЭВМ
        • 7 Примечание
        • 8 См. ` { | } ~. В дополнение к этому, на месте # может быть размещён £, а на месте $ — ¤. Такая система хорошо подходит для европейских языков, где нужны лишь несколько дополнительных символов. Вариант ASCII без национальных символов называется US-ASCII, или «International Reference Version».

          Для некоторых языков с нелатинской письменностью (русского, греческого, арабского, иврита) существовали более радикальные модификации ASCII. Одним из вариантов был отказ от строчных латинских букв — на их месте размещались национальные символы (для русского и греческого — только заглавные буквы). Другой вариант — переключение между US-ASCII и национальным вариантом «на лету» с помощью символов SO (Shift Out) и SI (Shift In) — в этом случае в национальном варианте можно полностью устранить латинские буквы и занять всё пространство под свои символы. См. также КОИ-7.

          Впоследствии оказалось удобнее использовать 8-битные кодировки (кодовые страницы), где нижнюю половину кодовой таблицы (0—127) занимают символы US-ASCII, а верхнюю (128—255) — дополнительные символы, включая набор национальных символов. Таким образом, верхняя половина таблицы ASCII до повсеместного внедрения Юникода активно использовалась для представления локализированных символов, букв местного языка. Отсутствие единого стандарта размещения кириллических символов в таблице ASCII доставляло множество проблем с кодировками (КОИ-8, Windows-1251 и другие). Другие языки с нелатинской письменностью тоже страдали из-за наличия нескольких разных кодировок.

          В Юникоде первые 128 символов тоже совпадают с соответствующими символами US-ASCII.

          Кодировка

            .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. _
          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

          Символ 0x5e в первой версии стандарта ASCII (1963) соответствовал стрелке вверх, а символ 0x5f — стрелке влево. Стандарт ECMA-6 (1965) заменил их на знак вставки (используемый также в роли циркумфлекса) и нижнюю черту (подчёркивание) соответственно.

          Управляющие символы

          Основная статья: Управляющие символы

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

          (После названия каждого символа указан его 16-ричный код)

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

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

          • Цифры 0—9 представляются своими двоичными значениями (например, 5=01012), перед которыми стоит 00112. Таким образом, двоично-десятичные числа (BCD) превращаются в ASCII-строку с помощью простого добавления слева 00112 к каждому двоично-десятичному полубайту.
          • Буквы A-Z верхнего и нижнего регистров различаются в своём представлении только одним битом, что упрощает преобразование регистра и проверку на диапазон. Буквы представляются своими порядковыми номерами в алфавите, записанными в двоичной системе счисления, перед которыми стоит 1002 (для букв верхнего регистра) или 1102 (для букв нижнего регистра).

          Представление ASCII в ЭВМ

          На подавляющем большинстве современных компьютеров минимально адресуемая единица памяти — 8-битный байт, поэтому там используются 8-битные, а не 7-битные символы. Обычно символ ASCII расширяют до 8 бит, просто добавляя один нулевой бит в качестве старшего.

          На компьютерах системы IBM/360, однако, в случае использования ASCII применялся другой метод: 6-й бит (если считать самый младший бит первым) перемещается в 7-й, а бывший 7-й «раздваивается» и копируется и в 8-й бит, и в 6-й. Получается такая таблица [1]:

            .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
          0. NUL SOM EOA EOM EQT WRU RU BELL BKSP HT LF VT FF CR SO SI
          1. DC0 DC1 DC2 DC3 DC4 ERR SYNC LEM S0 S1 S2 S3 S4 S5 S6 S7
          2.                                
          3.                                
          4. BLANK  ! « # $  % & ( ) * + , . /
          5. 0 1 2 3 4 5 6 7 8 9  :  ; < = >  ?
          6.                                
          7.                                
          8.                                
          9.                                
          A. @ A B C D E F G H I J K L M N O
          B. P Q R S T U V W X Y Z [ \ ]
          C.                                
          D.                                
          E.   a b c d e f g h i j k l m n o
          F. p q r s t u v w x y z       ESC DEL

          На тех компьютерах, где минимально адресуемой единицей памяти было 36-битное слово, поначалу использовали 6-битные символы (1 слово = 6 символов). После перехода на ASCII на таких компьютерах в одном слове стали размещать либо 5 семибитных символов (1 бит оставался лишним), либо 4 девятибитных символа.

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

          Escape

          27

          F1

          112

          F2

          113

          F3

          114

          F4

          115

          F5

          116

          F6

          117

          F7

          118

          F8

          119

          F9

          120

          F10

          121

          F11

          122

          F12

          123

          Print Screen

          Scroll Lock

          145

          Pause

          19

          192

          1

          49

          2

          50

          3

          51

          4

          52

          5

          53

          6

          54

          7

          55

          8

          56

          9

          57

          0

          48

          189

          =+

          187

          Back Space

          8

          Insert

          45

          Home

          36

          Page Up

          33

          Num Lock

          144

          / доп.

          111

          * доп.

          106

          + доп.

          107

          Tab

          9

          Q

          81

          W

          87

          E

          69

          R

          82

          T

          84

          Y

          89

          U

          85

          I

          73

          O

          79

          P

          80

          [

          219

          ]

          221

          Delete

          46

          End

          35

          Page Down

          34

          7 доп.

          109

          8 доп.

          108

          9 доп.

          105

          Caps Lock

          20

          A

          65

          S

          83

          D

          68

          F

          70

          G

          71

          H

          72

          J

          74

          K

          75

          L

          76

          186

          ‘э

          222

          Enter

          13

          4 доп.

          100

          5 доп.

          101

          6 доп.

          102

          Enter доп.

          13

          Shift

          16

          Z

          90

          X

          88

          C

          67

          V

          86

          B

          66

          N

          78

          M

          77

          ,<

          188

          .>

          190

          /

          191

          Shift

          16

          \|

          220

          Up

          38

          1 доп.

          97

          2 доп.

          98

          3 доп.

          99

          Ctrl

          17

          win

          Alt

          18

          Space Bar

          32

          Alt

          18

          win

          list

          Ctrl

          17

          Left

          37

          Down

          40

          Right

          39

          Ins/0

          45/96

          Del/.

          46/110

          Примечание

          1. G. M. Amdahl, G. A. Blaauw, F. P. Brooks, Jr. Architecture of the IBM System/360, 1964

          См. также

          • Переносимый набор символов
          • Управляющие символы
          • EBCDIC
          • ISCII
          • VISCII
          • YUSCII
          • Юникод
          • ASCII art
          • КОИ-8

          Ссылки

          • Цветная таблица ASCII
          • Standard ECMA-6: 7-bit Coded Character Set, 6th edition  (англ.). Ecma International (December 1991). Архивировано из первоисточника 23 августа 2011.
          • Tom Jennings An annotated history of some character codes or ASCII: American Standard Code for Information Infiltration  (англ.) (1999-09-16 — 2004-10-29). Архивировано из первоисточника 23 августа 2011.
          • ASCII Chart and Other Resources  (англ.). JimPrice.Com.
          Кодировки символов
          Основы → алфавит • текст ( файл • данные ) • набор символов • конверсия
          Исторические кодировки → Докомп. : семафорная (Макарова) • Морзе • Бодо • МТК-2 Комп.: 6 бит • УПП • RADIX-50 • EBCDIC ( ДКОИ-8 ) • КОИ-7 • ISO 646
          совре-
          менное
          8-битное
          представ-
          ление
          символы → ASCII ( управляющие • печатные ) не-ASCII ( псевдографика )
          8бит. код.стр. Разные →   Кириллица: КОИ-8 • ГОСТ 19768-87 • MacCyrillic
          ISO 8859 → 1(лат.) 2 3 4 5(кир.) 6 7 8 9 10 11 12 13 14 15(€) 16
          Windows → 1250 1251(кир.) 1252 1253 1254 1255 1256 1257 1258 | WGL4
          IBM&DOS → 437 • 850 • 852 • 855 • 866 «альт.» • ( МИК ) • ( НИИ ЭВМ )
          Много-
          байтные
          Традиционные → DBCS ( GB2312 ) • HTML
          Unicode → UTF-16 • UTF-8 • список символов ( кириллица )
          Связанные
          темы →
          интерфейс пользователя • раскладка клавиатуры • локаль • перевод строки • шрифт • кракозябры • транслит • нестандартные шрифты • текст как изображение Утилиты: iconv • recode

          ASCII | это.

          .. Что такое ASCII?

          У этого термина существуют и другие значения, см. ASCII (значения).

          ASCII

          ASCII (англ. American Standard Code for Information Interchange) — американская стандартная кодировочная таблица для печатных символов и некоторых специальных кодов. В американском варианте английского языка произносится [э́ски], тогда как в Великобритании чаще произносится [а́ски]; по-русски произносится также [а́ски] или [аски́].

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

          1 в двоичном формате). включая некоторые управляющие символы, такие как «конец передачи». Различные расширенные версии включают неанглийские символы, но все, что выше символ 127 следует считать ненадежным, если схема кодирования четко не определена. (Для надежного представления международных данных рассмотрите возможность использования UTF-8 или UTF-16.)

          Встроенные калькуляторы в MacOS и Windows предоставляют удобные преобразователи десятичных/двоичных/шестнадцатеричных чисел. У Mac есть поиск ASCII и Unicode.

          • Для обеспечения обратной совместимости 128 символов ASCII назначаются кодовые точки Unicode, которые совпадают с их кодами в более ранних стандартах. Таким образом, ASCII можно считать очень небольшим подмножеством Unicode.
          • В HTML любой символ может быть представлен с помощью &# [код десятичного символа] ; например код ASCII 33 = ! , который отображает «!» персонаж.
          • Значения также могут быть указаны в шестнадцатеричном виде с использованием &#x [шестнадцатеричный код символа] ; например «!» также может быть записано как ! .
          • В URL-адресах HTML большинство символов можно представить с помощью % [шестнадцатеричный код символа] . Например, символ пробела — это десятичное число 32 или шестнадцатеричное число 20, поэтому пробел в URL-адресе можно записать как 9.0040 %20 .
          • Многие символы также имеют именованные символы HTML, например & отображает символ «&» .
          • Регистр имеет значение для некоторых именованных символов, например ä = ä , Ä  =  Ä .
          • Набор символов ASCII определен в стандарте ANSI X3.4-1986.
            Набор символов Latin-1 (латинский алфавит № 1) определен в стандарте ISO 8859.-1.
            Мнемонические HTML-коды основаны на стандартном обобщенном языке разметки (SGML), определенном в стандарте ISO 8879.
          • См. примечания для символов 128+ ниже, так как базовый 7-битный стандарт ASCII только повышается до 127, и более высокие коды требуют некоторой интерпретации, поскольку существуют различные стандарты того, как с ними обращаться. Другими словами, все, что выше 127, на самом деле не является ASCII.

          Коды 1–31: управляющие символы

          Содержание

          • 1 Наложение символов
          • 2 Национальные варианты ASCII
          • 3 Кодировка
          • 4 Управляющие символы
          • 5 Структурные свойства таблицы
          • 6 Представление ASCII в ЭВМ
          • 7 Примечание
          • 8 См. ` { | } ~. В дополнение к этому, на месте # может быть размещён £, а на месте $ — ¤. Такая система хорошо подходит для европейских языков, где нужны лишь несколько дополнительных символов. Вариант ASCII без национальных символов называется US-ASCII, или «International Reference Version».

            Для некоторых языков с нелатинской письменностью (русского, греческого, арабского, иврита) существовали более радикальные модификации ASCII. Одним из вариантов был отказ от строчных латинских букв — на их месте размещались национальные символы (для русского и греческого — только заглавные буквы). Другой вариант — переключение между US-ASCII и национальным вариантом «на лету» с помощью символов SO (Shift Out) и SI (Shift In) — в этом случае в национальном варианте можно полностью устранить латинские буквы и занять всё пространство под свои символы. См. также КОИ-7.

            Впоследствии оказалось удобнее использовать 8-битные кодировки (кодовые страницы), где нижнюю половину кодовой таблицы (0—127) занимают символы US-ASCII, а верхнюю (128—255) — дополнительные символы, включая набор национальных символов. Таким образом, верхняя половина таблицы ASCII до повсеместного внедрения Юникода активно использовалась для представления локализированных символов, букв местного языка. Отсутствие единого стандарта размещения кириллических символов в таблице ASCII доставляло множество проблем с кодировками (КОИ-8, Windows-1251 и другие). Другие языки с нелатинской письменностью тоже страдали из-за наличия нескольких разных кодировок.

            В Юникоде первые 128 символов тоже совпадают с соответствующими символами US-ASCII.

            Кодировка

              .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. _
            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

            Символ 0x5e в первой версии стандарта ASCII (1963) соответствовал стрелке вверх, а символ 0x5f — стрелке влево. Стандарт ECMA-6 (1965) заменил их на знак вставки (используемый также в роли циркумфлекса) и нижнюю черту (подчёркивание) соответственно.

            Управляющие символы

            Основная статья: Управляющие символы

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

            (После названия каждого символа указан его 16-ричный код)

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

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

            • Цифры 0—9 представляются своими двоичными значениями (например, 5=01012), перед которыми стоит 00112. Таким образом, двоично-десятичные числа (BCD) превращаются в ASCII-строку с помощью простого добавления слева 00112 к каждому двоично-десятичному полубайту.
            • Буквы A-Z верхнего и нижнего регистров различаются в своём представлении только одним битом, что упрощает преобразование регистра и проверку на диапазон. Буквы представляются своими порядковыми номерами в алфавите, записанными в двоичной системе счисления, перед которыми стоит 1002 (для букв верхнего регистра) или 1102 (для букв нижнего регистра).

            Представление ASCII в ЭВМ

            На подавляющем большинстве современных компьютеров минимально адресуемая единица памяти — 8-битный байт, поэтому там используются 8-битные, а не 7-битные символы. Обычно символ ASCII расширяют до 8 бит, просто добавляя один нулевой бит в качестве старшего.

            На компьютерах системы IBM/360, однако, в случае использования ASCII применялся другой метод: 6-й бит (если считать самый младший бит первым) перемещается в 7-й, а бывший 7-й «раздваивается» и копируется и в 8-й бит, и в 6-й. Получается такая таблица [1]:

              .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
            0. NUL SOM EOA EOM EQT WRU RU BELL BKSP HT LF VT FF CR SO SI
            1. DC0 DC1 DC2 DC3 DC4 ERR SYNC LEM S0 S1 S2 S3 S4 S5 S6 S7
            2.                                
            3.                                
            4. BLANK  ! « # $  % & ( ) * + , . /
            5. 0 1 2 3 4 5 6 7 8 9  :  ; < = >  ?
            6.                                
            7.                                
            8.                                
            9.                                
            A. @ A B C D E F G H I J K L M N O
            B. P Q R S T U V W X Y Z [ \ ]
            C.                                
            D.                                
            E.   a b c d e f g h i j k l m n o
            F. p q r s t u v w x y z       ESC DEL

            На тех компьютерах, где минимально адресуемой единицей памяти было 36-битное слово, поначалу использовали 6-битные символы (1 слово = 6 символов). После перехода на ASCII на таких компьютерах в одном слове стали размещать либо 5 семибитных символов (1 бит оставался лишним), либо 4 девятибитных символа.

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

            Escape

            27

            F1

            112

            F2

            113

            F3

            114

            F4

            115

            F5

            116

            F6

            117

            F7

            118

            F8

            119

            F9

            120

            F10

            121

            F11

            122

            F12

            123

            Print Screen

            Scroll Lock

            145

            Pause

            19

            192

            1

            49

            2

            50

            3

            51

            4

            52

            5

            53

            6

            54

            7

            55

            8

            56

            9

            57

            0

            48

            189

            =+

            187

            Back Space

            8

            Insert

            45

            Home

            36

            Page Up

            33

            Num Lock

            144

            / доп.

            111

            * доп.

            106

            + доп.

            107

            Tab

            9

            Q

            81

            W

            87

            E

            69

            R

            82

            T

            84

            Y

            89

            U

            85

            I

            73

            O

            79

            P

            80

            [

            219

            ]

            221

            Delete

            46

            End

            35

            Page Down

            34

            7 доп.

            109

            8 доп.

            108

            9 доп.

            105

            Caps Lock

            20

            A

            65

            S

            83

            D

            68

            F

            70

            G

            71

            H

            72

            J

            74

            K

            75

            L

            76

            186

            ‘э

            222

            Enter

            13

            4 доп.

            100

            5 доп.

            101

            6 доп.

            102

            Enter доп.

            13

            Shift

            16

            Z

            90

            X

            88

            C

            67

            V

            86

            B

            66

            N

            78

            M

            77

            ,<

            188

            .>

            190

            /

            191

            Shift

            16

            \|

            220

            Up

            38

            1 доп.

            97

            2 доп.

            98

            3 доп.

            99

            Ctrl

            17

            win

            Alt

            18

            Space Bar

            32

            Alt

            18

            win

            list

            Ctrl

            17

            Left

            37

            Down

            40

            Right

            39

            Ins/0

            45/96

            Del/.

            46/110

            Примечание

            1. G. M. Amdahl, G. A. Blaauw, F. P. Brooks, Jr. Architecture of the IBM System/360, 1964

            См. также

            • Переносимый набор символов
            • Управляющие символы
            • EBCDIC
            • ISCII
            • VISCII
            • YUSCII
            • Юникод
            • ASCII art
            • КОИ-8

            Ссылки

            • Цветная таблица ASCII
            • Standard ECMA-6: 7-bit Coded Character Set, 6th edition  (англ.). Ecma International (December 1991). Архивировано из первоисточника 23 августа 2011.
            • Tom Jennings An annotated history of some character codes or ASCII: American Standard Code for Information Infiltration  (англ.) (1999-09-16 — 2004-10-29). Архивировано из первоисточника 23 августа 2011.
            • ASCII Chart and Other Resources  (англ.). JimPrice.Com.
            Кодировки символов
            Основы → алфавит • текст ( файл • данные ) • набор символов • конверсия
            Исторические кодировки → Докомп. : семафорная (Макарова) • Морзе • Бодо • МТК-2 Комп.: 6 бит • УПП • RADIX-50 • EBCDIC ( ДКОИ-8 ) • КОИ-7 • ISO 646
            совре-
            менное
            8-битное
            представ-
            ление
            символы → ASCII ( управляющие • печатные ) не-ASCII ( псевдографика )
            8бит. код.стр. Разные →   Кириллица: КОИ-8 • ГОСТ 19768-87 • MacCyrillic
            ISO 8859 → 1(лат.) 2 3 4 5(кир.) 6 7 8 9 10 11 12 13 14 15(€) 16
            Windows → 1250 1251(кир.) 1252 1253 1254 1255 1256 1257 1258 | WGL4
            IBM&DOS → 437 • 850 • 852 • 855 • 866 «альт.» • ( МИК ) • ( НИИ ЭВМ )
            Много-
            байтные
            Традиционные → DBCS ( GB2312 ) • HTML
            Unicode → UTF-16 • UTF-8 • список символов ( кириллица )
            Связанные
            темы →
            интерфейс пользователя • раскладка клавиатуры • локаль • перевод строки • шрифт • кракозябры • транслит • нестандартные шрифты • текст как изображение Утилиты: iconv • recode

            как человечество пришло к международному стандарту кодирования символов / Хабр

            Уверена, что большинство читателей хоть немного знакомы с терминами «Unicode» и «UTF-8». Но все ли знают, что именно стоит за ними? По сути они относятся к стандартам кодирования символов, также известным как наборы символов. Концепция появилась во времена оптического телеграфа, а не в компьютерную эру, как можно было подумать. Еще в 18 веке существовала потребность в быстрой передаче информации на большие расстояния, для чего использовались так называемые телеграфные коды. Информация кодировалась с помощью оптических, электронных и других средств.

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

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

            От кода к графикам


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

            Об оптическом телеграфе, также называемом «семафоре», мы уже писали в статье об истории оптической связи. Он состоял из ряда ретрансляционных станций, каждая из которых была оборудована системой поворотных стрелок, используемой для отображения символов телеграфного кода. Система братьев Шапп, которая использовалась французскими войсками между 1795 и 1850-ми годами, была основана на деревянной перекладине с двумя подвижными концами (рычагами), каждый из которых мог перемещаться в одно из семи положений. Вместе с четырьмя позициями для перекладины семафор в теории мог обозначить 196 символов (4x7x7). На практике число сокращалось до 92-94 позиций.

            Французский оптический телеграфный код братьев Шапп, 1809 год

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

            Улучшение производительности


            Затем оптический телеграф был заменен электрическим. Это означало, что времена, когда кодировки фиксировались людьми, наблюдающими за ближайшей релейной вышкой, прошли. С двумя телеграфными устройствами, соединенными металлическим проводом, инструментом для передачи информации стал электрический ток. Это изменение привело к появлению новых кодов электрического телеграфа, а код Морзе в итоге стал международным стандартом (за исключением США, которые продолжали использовать американский код Морзе за пределами радиотелеграфии) с момента его изобретения в Германии в 1848 году.

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

            Стандарт ITA 2

            По мере развития технологий ручной телеграф был заменен на Западе автоматическим. В нем использовался 5-битный код Бодо, а также производный от него код Мюррея (последний основывался на использовании бумажной ленты, в которой пробивались отверстия). Система Мюррея позволяла заранее подготовить ленту с сообщениями, а затем загрузить ее в устройство для чтения, чтобы сообщение передалось автоматически. Код Бодо лег в основу международного телеграфного алфавита версии 1 (ITA 1), а модифицированный код Бодо-Мюррея лег в основу ITA 2, которая использовалась вплоть до 1960-х годов.

            К 1960-м годам ограничение в 5 бит на символ уже не требовалось, что привело к развитию 7-битного ASCII в США и таких стандартов, как JIS X 0201 (для японских символов катакана) в Азии. В сочетании с телетайпами, которые тогда широко использовались, это позволяло передавать довольно сложные сообщения, включающие символы верхнего и нижнего регистров.

            Полный набор символов 7-битного ASCII

            В течение 1970-х и начала 1980-х годов ограничений 7- и 8-битных кодировок, таких как расширенный ASCII (например, ISO 8859-1 или Latin 1), было достаточно для основных домашних компьютеров и офисных нужд. Несмотря на это, потребность в улучшении была очевидна, поскольку общие задачи, такие как обмен цифровыми документами и текстом, часто приводили к хаосу из-за множества кодировок ISO 8859. Первый шаг был сделан в 1991 году — появился 16-битный Unicode 1.0.

            Развитие 16-битных кодировок


            Удивительно, что всего в 16 битах Unicode удалось охватить не только все западные системы письма, но и многие китайские иероглифы и множество специальных символов, используемых, например, в математике. С 16 битами, допускающими до 65 536 кодовых точек, Unicode 1.0 легко вмещал 7 129 символов. Но к моменту появления Unicode 3.1 в 2001 году он содержал не менее 94 140 символов.

            Сейчас, в своей 13 версии, Unicode содержит в общей сложности 143 859 символов, не считая управляющих. Изначально Unicode предполагалось использовать только для кодирования систем записи, которые применяются в настоящее время. Но к релизу Unicode 2.0 в 1996 году стало понятно, что эту цель следует переосмыслить, чтобы кодировать даже редкие и исторические символы. Чтобы достичь этого без обязательной 32-битной кодировки каждого символа, Unicode изменился: он позволил не только кодировать символы напрямую, но и использовать их компоненты, или графемы.

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

            Unicode на любой вкус и цвет


            На данный момент довольно много людей, вероятно, сбиты с толку из-за различных терминов, которые используются, когда дело доходит до Unicode. Поэтому здесь важно отметить, что Unicode относится к стандарту, а различные Unicode Transformation Format являются его реализациями. UCS-2 и USC-4 — это более старые 2- и 4-байтовые реализации Unicode, при этом UCS-4 идентичен UTF-32, а UCS-2 заменяем UTF-16.

            UCS-2 как самая ранняя форма Unicode проникла во многие операционные системы 90-х годов, что сделало переход на UTF-16 наименее опасным вариантом. Вот почему Windows и MacOS, оконные менеджеры, такие как KDE, и среды выполнения Java и . NET используют внутреннее представление UTF-16.

            Обзор базовой многоязычной плоскости Unicode, первой плоскости Unicode практически со всеми современными языками

            UTF-32, как следует из названия, кодирует каждый символ в четырех байтах. Это немного расточительно, зато абсолютно предсказуемо. Тот же UTF-8 символ может кодировать символ в диапазоне от одного до четырех байтов. В случае с UTF-32 определение количества символов в строке — это простая арифметика: взять все количество байтов и поделить на четыре. Это привело к появлению компиляторов и некоторых языков, например Python, позволяющих использовать UTF-32 для представления строк Unicode.

            Однако из всех форматов Unicode наиболее популярным на сегодняшний день является UTF-8. Этому во многом способствовала всемирная сеть Интернет, где большинство веб-сайтов обслуживают свои HTML-документы в кодировке UTF-8. Из-за компоновки различных плоскостей кодовых точек в UTF-8, Western и многие другие распространенные системы записи умещаются в пределах двух байтов. Если сравнивать со старыми кодировками ISO 8859 и Shift JIS, фактически тот же текст в UTF-8 не занимает больше места, чем раньше.

            От оптических башен до интернета


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

            Для тех, кому довелось переключаться между кодировками ISO 8859 в почтовых клиентах и ​​веб-браузерах, чтобы получить что-то, похожее на исходное текстовое сообщение, поддержка Unicode стала благословением. Я могу понять этих людей. Когда 7-битный ASCII (или EBCDIC) был безальтернативной технологией, иногда приходилось тратить часы, разбираясь в символьной путанице цифрового документа, полученного из европейского или американского офиса.

            Даже если Unicode не лишен проблем, трудно не испытывать благодарности, сравнивая его с тем, что было раньше. Вот они, 30 лет существования Unicode.

            Исчерпывающее руководство по Юникоду и кодировке символов в Python

            Работа с кодировкой символов на Python, да и на любом другом языке, временами выглядит довольно сложной. На Stack Overflow можно найти тысячи вопросов, посвящённых таким исключениям, как UnicodeDecodeError и UnicodeEncodeError. Данное руководство призвано прояснить сложные аспекты работы с этими исключениями и продемонстрировать, что работа с текстовыми и двоичными данными на Python 3 может быть приятной. В Python хорошо реализована поддержка Юникода, однако для работы с кодировкой всё же потребуется приложить усилия.

            Вводная часть статьи даст общее понимание работы с Юникодом, не привязанное к какому-то определённому языку, однако практические примеры будут приведены именно на Python, а их описание будет довольно лаконичным.

            Изучив эту статью, вы:
            • Освоите концепции кодировки символов и системы нумерации;
            • Поймёте, как кодировка работает с объектами str и bytes;
            • Узнаете, как в Python поддерживается система нумерации посредством различных форм литералов int;
            • Познакомитесь со встроенными функциями языка, относящимися к кодировке и системе нумерации.

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

            Прим. Статья ориентирована на Python 3, а все примеры кода созданы с помощью оболочки CPython 3.7.2. Большая часть более ранних версий Python 3 также будут корректно обрабатывать код. Если вы всё ещё используете Python 2 и различия в обработке текста и бинарных данных между 2 и 3 версиями языка вас отпугивают, это руководство может помочь вам преодолеть барьер.

            Что такое кодировка символов?

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

            Независимо от того, занимаетесь вы самообразованием или получили более формальное образование в сфере IT , наверняка пару раз вы уже видели таблицу ASCII. Эта таблица — хорошее начало для изучения принципов кодировки, так как она простая и маленькая (как вы увидите дальше, даже слишком маленькая).

            Она охватывает следующее:

            • Символы английского алфавита в нижнем регистре: от a до z;
            • Символы английского алфавита в верхнем регистре: от A до Z;
            • Некоторые знаки препинания и символы: например «$» или «!»;
            • Символы, отображаемые как пустое место: пробел (« »), символ новой строки, возврата каретки, горизонтальной и вертикальной табуляции и несколько других;
            • Некоторые непечатаемые символы: такие как бекспейс, «\b», которые просто невозможно отобразить, так, как к примеру, букву А.

            Приведём формальное определение кодировки символов.

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

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

            Диапазон кодовых точек Класс
            от 0 до 31 Контрольные и неотображаемые символы
            от 32 до 64 Знаки пунктуации, символы, числа и пробел
            от 65 до 90 Буквы английского алфавита в верхнем регистре
            от 91 до 96 Дополнительные графемы, такие как [ и \
            от 97 до 122 Буквы английского алфавита в нижнем регистре
            от 123 до 126 Дополнительные графемы, такие как { и |
            127 Контрольный неотображаемый символ (DEL)

            Всего кодировка ASCII содержит 128 символов. В таблице ниже вы видите исчерпывающий набор знаков, которые позволяет отобразить эта кодировка. Если вы не видите какого-то символа, значит вы просто не сможете его вывести с помощью ASCII.

            Таблица символов ASCII

            Кодовая точка Символ (имя) Кодовая точка Символ (имя)
            0 NUL (Null) 64 @
            1 SOH (Start of Heading) 65 A
            2 STX (Start of Text) 66 B
            3 ETX (End of Text) 67 C
            4 EOT (End of Transmission) 68 D
            5 ENQ (Enquiry) 69 E
            6 ACK (Acknowledgment) 70 F
            7 BEL (Bell) 71 G
            8 BS (Backspace) 72 H
            9 HT (Horizontal Tab) 73 I
            10 LF (Line Feed) 74 J
            11 VT (Vertical Tab) 75 K
            12 FF (Form Feed) 76 L
            13 CR (Carriage Return) 77 M
            14 SO (Shift Out) 78 N
            15 SI (Shift In) 79 O
            16 DLE (Data Link Escape) 80 P
            17 DC1 (Device Control 1) 81 Q
            18 DC2 (Device Control 2) 82 R
            19 DC3 (Device Control 3) 83 S
            20 DC4 (Device Control 4) 84 T
            21 NAK (Negative Acknowledgment) 85 U
            22 SYN (Synchronous Idle) 86 V
            23 ETB (End of Transmission Block) 87 W
            24 CAN (Cancel) 88 X
            25 EM (End of Medium) 89 Y
            26 SUB (Substitute) 90 Z
            27 ESC (Escape) 91 [
            28 FS (File Separator) 92 \
            29 GS (Group Separator) 93 ]
            30 RS (Record Separator) 94 ^
            31 US (Unit Separator) 95 _
            32 SP (Space) 96 `
            33 ! 97 a
            34 " 98 b
            35 # 99 c
            36 $ 100 d
            37 % 101 e
            38 & 102 f
            39 ' 103 g
            40 ( 104 h
            41 ) 105 i
            42 * 106 j
            43 + 107 k
            44 , 108 l
            45 - 109 m
            46 . 110 n
            47 / 111 o
            48 0 112 p
            49 1 113 q
            50 2 114 r
            51 3 115 s
            52 4 116 t
            53 5 117 u
            54 6 118 v
            55 7 119 w
            56 8 120 x
            57 9 121 y
            58 : 122 z
            59 ; 123 {
            60 < 124 |
            61 = 125 }
            62 > 126 ~
            63 ? 127 DEL (delete)

            Модуль string

            Модуль string — простой и удобный инструмент, разграничивающий содержащиеся в ASCII символы по группам, разделяя их в строки-константы. _`{|}~»»» printable = digits + ascii_letters + punctuation + whitespace

            Большинство этих констант исчерпывающе описаны их идентификаторами. Мы вкратце коснёмся констант hexdigits и octdigits.

            Мы можем использовать определённые в модуле константы для рутинных операций:

            >>> import string
            
            >>> s = "What's wrong with ASCII?!?!?"
            >>> s.rstrip(string.punctuation)
            'What's wrong with ASCII'

            Прим. Обратите внимание, string.printable включает string.whitespace. Это несколько не соответствует тому, как печатаемые символы определяет метод str.isprintable(), который не рассматривает ни один из символов {'\v', '\n', '\r', '\f', '\t'} как печатаемый.

            Это различие происходит из определения метода: str.isprintable() рассматривает что-либо печатаемым, если «все символы рассматриваются как печатаемые методом repr().

            Что такое биты

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

            Бит — это сигнал, который имеет два возможных состояния. Есть различные способы символического отображения этих состояний:

            • 0 или 1;
            • «да» или «нет»;
            • True или False;
            • «включено» или «выключено».

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

            Каждое из этих десятичных чисел можно выразить последовательностью бит (числом с основанием 2). Вот таблица соотношения двоичных и десятичных чисел:

            Десятичное Двоичное (кратко) Двоичное (в байте)
            0 0 00000000
            1 1 00000001
            2 10 00000010
            3 11 00000011
            4 100 00000100
            5 101 00000101
            6 110 00000110
            7 111 00000111
            8 1000 00001000
            9 1001 00001001
            10 1010 00001010

            Обратите внимание, что при увеличении десятичного числа n для его отображения (а следовательно и для отображения символа, относящегося к этому числу) требуется всё больше значимых бит.

            Вот удобный метод представить строки ASCII как последовательность бит. Каждый символ из строки ASCII переводится в последовательность из 8 нолей и единиц с пробелами между этими последовательностями:

            >>> def make_bitseq(s: str) -> str:
            ...     if not s.isascii():
            ...         raise ValueError("ASCII only allowed")
            ...     return " ".join(f"{ord(i):08b}" for i in s)
            
            >>> make_bitseq("bits")
            '01100010 01101001 01110100 01110011'
            
            >>> make_bitseq("CAPS")
            '01000011 01000001 01010000 01010011'
            
            >>> make_bitseq("$25.43")
            '00100100 00110010 00110101 00101110 00110100 00110011'
            
            >>> make_bitseq("~5")
            '01111110 00110101'

            Прим. Обратите внимание, что метод .isascii() появился в Python 3.7.

            Строковой литерал f-string f"{ord(i):08b}" использует мини-язык форматирования Format Specification Mini-Language, а именно его возможность замещения полей при форматировании строк.

            • левая часть выражения, ord(i), представляет объект, значение которого будет отформатировано и отображено при выводе. ord() возвращает кодовую точку одиночного символа str в десятичном выражении;
            • Правая сторона выражения определяет форматирование объекта. 08 означает ширина 8, заполнение нулями, а b работает как команда вывести число в двоичном (binary) эквиваленте.

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

            Нам нужно больше бит

            Исходя из определения бита, можно вывести следующую закономерность: при определённом количестве бит n с их помощью можно выразить 2n разных значений.

            def n_possible_values(nbits: int) -> int:
                return 2 ** nbits

            Вот что это означает:

            • 1 бит позволяет выразить 21 == 2 возможных значения;
            • 8 бит позволяют выразить 28 == 256 возможных значений;
            • 64 бита позволяют выразить 264 == 18 446 744 073 709 551 616 возможных значений.

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

            Вот как можно это рассчитать:

            >>> from math import ceil, log
            
            >>> def n_bits_required(nvalues: int) -> int:
            ...     return ceil(log(nvalues) / log(2))
            
            >>> n_bits_required(256)
            8

            Округление вверх в методе n_bits_required() требуется для расчёта значений, которые не являются чистой степенью двойки. К примеру, вам нужно сохранить набор из 110 различных символов. Для этого потребуется log(110) / log(2) == 6.781 бит, но поскольку бит для вычислительной техники является мельчайшей неделимой величиной, для отображения 110 различных значений нам понадобится 7 бит, при этом несколько значений останутся невостребованными.

            >>> n_bits_required(110)
            7

            Всё сказанное служит для обоснования одной идеи: ASCII, строго говоря, семибитная кодировка. Эта таблица содержит 128 кодовых точек, и, соответственно, символов, от 0 до 127 включительно. Это требует 7 бит:

            >>> n_bits_required(128)  # от 0 до 127
            7
            >>> n_possible_values(7)
            128

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

            Прим. В этой статье под байтом подразумевается группа из 8 бит, как повелось с 60-х годов прошлого века. Если вам не по душе это новомодное название, можете называть их октетами.

            То, что ASCII-таблица использует 7 бит из доступных 8, означает, что память вычислительного устройства, занятого строками символов ASCII, наполовину пуста. Для того, чтобы лучше понять, почему это происходит, вернитесь к приведённой выше таблице соответствия двоичных и десятичных чисел. Вы можете выразить числа 0 и 1 с помощью 1 бита, или вы можете использовать 8 бит, чтобы выразить их как 00000000 и 00000001 соответственно.

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

            Вы можете выразить числа от 0 до 3 всего двумя битами, от 00 до 11, или использовать 8 бит, чтобы выразить их как 00000000, 00000001, 00000010 и 00000011. Самая большая кодовая точка ASCII, 127, требует только 7 значимых бит.

            С учётом этого взгляните, как метод make_bitseq() преобразует строки ASCII в строки, состоящие из байт, где каждый символ требует один байт:

            >>> make_bitseq("bits")
            '01100010 01101001 01110100 01110011'

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

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

            Со временем появилась одна большая схема кодировки, которая объединила их. Однако, прежде чем мы до этого доберёмся, поговорим немного о краеугольных камнях схем кодировки символов — системах счисления.

            Изучаем основы: другие системы счисления

            В ASCII-таблице, как мы увидели, каждый символ соответствует числу от 0 до 127.

            Этот диапазон чисел выражен в десятичной системе счисления. Именно эту систему используют для счёта люди, просто потому что на руках у нас по 10 пальцев.

            Однако существуют и другие системы счисления, которые, в частности, широко используются в исходном коде CPython. Следует понимать, что действительное число не изменяется, а системы счисления просто по-разному его выражают.

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

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

            • Двоичная: с основой 2;
            • Восьмеричная: с основой 8;
            • Шестнадцатеричная (hex): с основой 16.

            Что же мы подразумеваем, говоря что определённая система счисления имеет основу N?

            Один из способов объяснения разных систем счисления заключается в том, чтобы представить, что у вас N пальцев.

            Если же вам требуется более подробное объяснение систем счисления, обратитесь к книге Чарльза Петцольда «Код». В этой книге детально объясняются основы работы вычислительной техники.

            Конструктор int() — один из способов показать, как разные системы счисления преобразуют одну и ту же строку с помощью Python. Если вы передадите str в int(), Python по умолчанию будет считать, что строка содержит число в десятичной системе. Однако вы можете дать другие указания:

            >>> int('11')
            11
            >>> int('11', base=10)  # 10 установлено по умолчанию
            11
            >>> int('11', base=2)  # Двоичная
            3
            >>> int('11', base=8)  # Восьмеричная
            9
            >>> int('11', base=16)  # Шестнадцатеричная
            17

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

            Тип литерала Префикс Пример
            Нет Нет 11
            Binary literal 0b или 0B 0b11
            Octal literal 0o или 0O 0o11
            Hex literal 0x или 0X 0x11

            Всё это — разновидности целочисленных литералов. Результаты применения префиксов будут такими же, как и в случае использования int() с определением параметра base. Для Python всё это просто целые числа:

            >>> 11
            11
            >>> 0b11  # Двоичный литерал
            3
            >>> 0o11  # Восьмеричный литерал
            9
            >>> 0x11  # Шестнадцатеричный литерал
            17

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

            Десятичные числа в других системах счисления

            Десятичные Двоичные Восмеричные Шестнадцатеричные
            0 0b0 0o0 0x0
            1 0b1 0o1 0x1
            2 0b10 0o2 0x2
            3 0b11 0o3 0x3
            4 0b100 0o4 0x4
            5 0b101 0o5 0x5
            6 0b110 0o6 0x6
            7 0b111 0o7 0x7
            8 0b1000 0o10 0x8
            9 0b1001 0o11 0x9
            10 0b1010 0o12 0xa
            11 0b1011 0o13 0xb
            12 0b1100 0o14 0xc
            13 0b1101 0o15 0xd
            14 0b1110 0o16 0xe
            15 0b1111 0o17 0xf
            16 0b10000 0o20 0x10
            17 0b10001 0o21 0x11
            18 0b10010 0o22 0x12
            19 0b10011 0o23 0x13
            20 0b10100 0o24 0x14

            Кстати, вы можете сами убедиться, что подобные способы записи чисел очень часто используется в Стандартной Библиотеке Python. Найдите папку lib/python3.7/ в своей системе, перейдите в неё и введите команду:

            $ grep -nri --include "*\.py" -e "\b0x" lib/python3.7

            Команда сработает в любой Unix-системе с утилитой grep. С её помощью вы найдёте все шестнадцатеричные литералы. Для поиска двоичных используйте \b0b, а для восьмеричных — \b0o.

            Для чего же нужны альтернативные литералы целых чисел? Если коротко, числа 2, 8 и 16, в отличие от 10, являются степенями двойки. Основанные на них системы счисления выражают численные значения способами, более удобными для обработки бинарными вычислительными устройствами. К примеру, 65536, или 216, в шестнадцатеричной системе просто 10000 или, используя литерал, 0x10000.

            Введение в Юникод

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

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

            Вы можете представить Юникод как расширенную версию ASCII-таблицы — с 1 114 112 возможными кодовыми точками, от 0 до 1 114 111. Это 17*(216) или 0x10ffff в шестнадцатеричном представлении. Фактически, ASCII является частью Юникода, так как первые 128 символов этих кодировок полностью совпадают.

            Чтобы соблюсти технические детали, сам по себе Юникод не является кодировкой. Он скорее реализуется в различных кодировках символов, как вы вскоре увидите. По структуре Юникод скорее ассоциативный массив (что-то вроде dict) или база данных, состоящая из таблицы с двумя колонками. В этой таблице разные символы (такие как "a""¢", или даже "ቈ") соотносятся с различными целыми положительными числами. Кодировка же должна предоставлять несколько больше возможностей.

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

            Прим. Кстати, если уж мы хотим быть совсем точны в деталях, то надо отметить ещё один факт. Исторически сложилось, что в Юникоде доступны только 1 111 998 кодовых точек.

            Юникод и UTF-8

            Довольно скоро стало понятно, что все необходимые символы невозможно вместить в таблицу, используя только один байт. Современные, более ёмкие кодировки требовали использования больших объёмов.

            Ранее мы упоминали, что Юникод сам по себе не является кодировкой. И вот почему.

            Юникод не содержит указаний по извлечению из текста бит, он работает только с кодовыми точками. В нём нет стандарта конверсии текста в двоичные данные и обратно.

            Юникод является абстрактным стандартом кодировки. Для практического его применения чаще всего используют схему UTF-8. Стандарт Юникод (таблица соответствий символов кодовыми точкам) определяет несколько различных кодировок на основе единого набора символов.

            Как и менее распространённые UTF-16 и UTF-32, UTF-8 — формат кодировки для отображения символов Юникода в двоичном виде, используя один или несколько байт на один символ. UTF-16 и UTF-32 мы обсудим чуть позже, но пока нам интересен UTF-8 как самый популярный формат.

            Сначала требуется разобрать термины «‎‎кодирование»‎ и «‎декодирование»‎.

            Кодирование и декодирование в Python 3

            Тип данных str в Python 3 рассчитан на представление текста в удобном для чтения формате и может содержать любые символы Юникода.

            Тип bytes, напротив, представляет двоичные данные, последовательность байт, без указания на кодировку.

            Кодирование и декодирование — это процесс перехода данных из одной формы в другую.

            В методах .encode() и .decode() по умолчанию используется параметр "utf-8", однако для большей уверенности этот параметр можно определить самостоятельно:

            >>> "résumé".encode("utf-8")
            b'r\xc3\xa9sum\xc3\xa9'
            >>> "El Niño".encode("utf-8")
            b'El Ni\xc3\xb1o'
            
            >>> b"r\xc3\xa9sum\xc3\xa9".decode("utf-8")
            'résumé'
            >>> b"El Ni\xc3\xb1o".decode("utf-8")
            'El Niño'

            str.encode() возвращает объект типа bytes. И литералы этого типа объектов (такие как b"r\xc3\xa9sum\xc3\xa9"), и его отображение допускают только символы ASCII.

            Вот почему при вызове "El Niño".encode("utf-8"), ASCII-совместимое "El" отображается как есть, а n с тильдой экранируется в "\xc3\xb1". Этой с виду неудобочитаемой последовательностью представлены два байта, 0xc3 и 0xb1 в шестнадцатеричной системе:

            >>> " ". join(f"{i:08b}" for i in (0xc3, 0xb1))
            '11000011 10110001'

            Таким образом символ ñ требует два байта для бинарного представления с помощью UTF-8.

            Прим. Если вы введёте help(str.encode), скорее всего, увидите параметр по умолчанию encoding='utf-8'. Однако имейте в виду, что настройки Windows для Python 3.6 могут отличаться, поэтому использовать методы кодирования и декодирования без указания необходимой кодировки (например "résumé".encode()) следует с осторожностью.

            Python 3: всё на Юникоде

            Python 3 полностью реализован на Юникоде, а точнее на UTF-8. Вот что это означает:

            • По умолчанию предполагается, что исходный код Python 3 написан с помощью UTF-8. Это значит, что вам не нужно использовать определение # -*- coding: UTF-8 -*- в начале файлов .py в этой версии языка.
            • Все тексты (объекты формата str) реализованы на Юникоде. Кодированный текст представлен двоичными данными (bytes). Тип strможет содержать любой символ-литерал из Юникода (например "Δv / Δt"), и все они хранятся в Юникоде.
            • Любой из символов Юникода приемлем в качестве идентификатора. Например, вы можете использовать выражение résumé = "~/Documents/resume.pdf".
            • В модуле re по умолчанию установлен флаг re.UNICODE, а не re.ASCII. Это означает, что r"\w" соответствует буквам из Юникода, а не просто символам ASCII.
            • По умолчаниюencoding в str.encode() в bytes.decode() установлен в UTF-8.

            Нужно отметить также нюанс, касающийся встроенного метода open(). Его параметр encoding зависит от платформы и определяется значением locale.getpreferredencoding():

            >>> # Mac OS X High Sierra
            >>> import locale
            >>> locale.getpreferredencoding()
            'UTF-8'
            
            >>> # Windows Server 2012; другие сборки Windows могут использовать UTF-16
            >>> import locale
            >>> locale. getpreferredencoding()
            'cp1252'

            Мы делаем упор на эти моменты, чтобы вы вдруг не подумали, что кодировка UTF-8 является универсальной. Она действительно широко распространена, но вы вполне можете столкнуться и с другими вариантами. Не будет лишним предусмотреть это в коде.

            Один байт, два байта, три байта, четыре…

            Одна из важнейших особенностей UTF-8 состоит в том, что это кодировка с переменным размером.

            Вспомните раздел, посвящённый ASCII. Любой символ в этой таблице требует максимум одного байта пространства. Это можно быстро проверить с помощью следующего генератора:

            >>> all(len(chr(i).encode("ascii")) == 1 for i in range(128))
            True

            С UTF-8 дела обстоят по-другому. Символы Юникода могут занимать от одного до четырёх байт. Вот пример четырёхбайтного символа:

            >>> ibrow = "?"
            >>> len(ibrow)
            1
            >>> ibrow.encode("utf-8")
            b'\xf0\x9f\xa4\xa8'
            >>> len(ibrow. encode("utf-8"))
            4
            
            >>> # Вызов list() с объектом типа bytes возвращает
            >>> # значение каждого байта
            >>> list(b'\xf0\x9f\xa4\xa8')
            [240, 159, 164, 168]

            Это небольшая, но важная особенность метода len():

            • Размер единичного символа Юникода в объекте str языка Python всегда будет равен 1, вне зависимости от количества занимаемых байт.
            • Длина того же символа в объекте типа bytes будет варьироваться от 1 до 4.

            Таблица ниже показывает, сколько байт занимают основные типы символов.

            Десятичный диапазон Шестнадцатеричный
            диапазон
            Включённые символы Примеры
            от 0 до 127 от "\u0000" до "\u007F" U.S. ASCII "A""\n""7""&"
            от 128 до 2047 от "\u0080" до "\u07FF" Большая часть латинских алфавитов* "ę""±""ƌ""ñ"
            от 2048 до 65535 от "\u0800" до "\uFFFF" Дополнительные части многоязыковых символов (BMP)** "ത""ᄇ""ᮈ""‰"
            от 65536 до 1114111 от "\U00010000" до "\U0010FFFF" Другое*** "?""?""?""?",

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

            Прим. У UTF-8 есть и другие технические особенности. Те, кто работает на Python, редко с ними сталкиваются, поэтому мы не будем раскрывать их в этой статье, но упомянем вкратце, чтобы сохранить полноту картины. Так, UTF-8 использует коды-префиксы, указывающие на количество байт в последовательности. Такой приём позволяет декодеру группировать байты в условиях кодировки с переменным размером. Количество байт в последовательности определяется первым её байтом. Другие технические подробности можно найти на странице Википедии, посвящённой UTF-8 или на официальном сайте.

            Особенности UTF-16 и UTF-32

            Рассмотрим альтернативные кодировки, UTF-16 и UTF-32. Различие между ними и UTF-8 в основном практическое. Продемонстрируем величину расхождения с помощью перевода туда и обратно:

            >>> letters = "αβγδ"
            >>> rawdata = letters. encode("utf-8")
            >>> rawdata.decode("utf-8")
            'αβγδ'
            >>> rawdata.decode("utf-16")  # ?
            '뇎닎돎듎'

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

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

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

            Кодировка Байт на символ (включительно) Варьируемая длина
            UTF-8 От 1 до 4 Да
            UTF-16 От 2 до 4 Да
            UTF-32 4 Нет

            Любопытный аспект семейства UTF: UTF-8 не всегда занимает меньше памяти, чем UTF-16. Хотя с точки зрения математики это выглядит маловероятным, однако это возможно:

            >>> text = "記者 鄭啟源 羅智堅"
            >>> len(text.encode("utf-8"))
            26
            >>> len(text.encode("utf-16"))
            22

            Так получается из-за того, что кодовые точки в диапазоне от U+0800 до U+FFFF (от 2048 до 65535 в десятичной системе) в кодировке UTF-8 занимают три байта, а в UTF-16 только два.

            Это не означает, что нужно работать с UTF-16, независимо от того, насколько часто вы работаете с символами в этом диапазоне. Один из самых важных поводов придерживаться UTF-8 — в мире кодировок лучше держаться вместе с большинством.

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

            Прим. перев. Есть и более весомые причины использовать UTF-8. Среди них её обратная совместимость с ASCII, а также то, что это самосинхронизирующаяся кодировка.

            Python и встроенные функции

            Вы освоили самую сложную часть статьи. Теперь посмотрим, как всё изученное реализуется на Python.

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

            • ascii()
            • bin()
            • bytes()
            • chr()
            • hex()
            • int()
            • oct()
            • ord()
            • str()

            Логически их можно сгруппировать по назначению.

            • ascii()bin()hex() и oct() предназначены для различного представления вводных данных. Все они возвращают str. Первая, ascii(), производит представление объекта в ASCII, экранируя не входящие в эту таблицу символы. Оставшиеся три дают соответственно двоичное, шестнадцатеричное и восьмеричное представление целого числа. Все эти функции меняют только представление объекта, не изменяя непосредственно вводные данные.
            • bytes()str() и int() — конструкторы классов соответствующих типов: bytesstr, и int. Все они предлагают способы подогнать данные под желаемый тип.
            • ord() и chr() выполняют противоположные действия. ord() конвертирует символ в десятичную кодовую точку, а chr() принимает в качестве аргумента целое число, и возвращает символ, кодовой точкой которого это число является.

            В таблице ниже эти функции разобраны более подробно:

            Встроенные функции для работы с кодировками

            Функция Форма Тип аргументов Тип возвращаемых данных Назначение
            ascii() ascii(obj) Различный str Представление объекта символами ASCII. Не входящие в таблицу символы экранируются
            bin() bin(number) number: int str Бинарное представление целого чиста с префиксом "0b"
            bytes() bytes(последовательность_целых_чисел)

            bytes(s, enc[, errors])

            bytes(байты_или_буфер)

            bytes([i])

            Различный bytes Приводит аргумент к двоичным данным, типу bytes
            chr() chr(i) i: int

            i>=0

            i<=1114111

            str Преобразует кодовую точку (целочисленное значение) в символ Юникода
            hex() hex(number) number: int str Шестнадцатеричное представление целого числа с префиксом "0x"
            int() int([x])

            int(x, base=10)

            Различный int Приводит аргумент к типу int
            oct() oct(number) number: int str Восьмеричное представление целого числа с префиксом "0o"
            ord() ord(c) c: str

            len(c) == 1

            int Возвращает значение кодовой точки символа Юникода
            str() str(object=’‘)

            str(b[, enc[, errors]])

            Различный str Приводит аргумент к текстовому представлению, типу str

            Дальше можно посмотреть полезные примеры использования этих функций.

            Примеры использования встроенных функций

            ascii():

            >>> ascii("abcdefg")
            "'abcdefg'"
            
            >>> ascii("jalepeño")
            "'jalepe\\xf1o'"
            
            >>> ascii((1, 2, 3))
            '(1, 2, 3)'
            
            >>> ascii(0xc0ffee)  # Шестнадцатеричный литерал (int)
            '12648430'

            bin():

            >>> bin(0)
            '0b0'
            
            >>> bin(400)
            '0b110010000'
            
            >>> bin(0xc0ffee)  # Шестнадцатеричный литерал (int)
            '0b110000001111111111101110'
            
            >>> [bin(i) for i in [1, 2, 4, 8, 16]]  # `int` + обработка списка
            ['0b1', '0b10', '0b100', '0b1000', '0b10000']

            bytes():

            >>> # Последовательность целых чисел
            >>> bytes((104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100))
            b'hello world'
            
            >>> bytes(range(97, 123))  # Последовательность целых чисел
            b'abcdefghijklmnopqrstuvwxyz'
            
            >>> bytes("real ?", "utf-8")  # Строка + кодировка
            b'real \xf0\x9f\x90\x8d'
            
            >>> bytes(10)
            b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
            
            >>> bytes. fromhex('c0 ff ee')
            b'\xc0\xff\xee'
            
            >>> bytes.fromhex("72 65 61 6c 70 79 74 68 6f 6e")
            b'realpython'

            chr():

            >>> chr(97)
            'a'
            
            >>> chr(7048)
            'ᮈ'
            
            >>> chr(1114111)
            '\U0010ffff'
            
            >>> chr(0x10FFFF)  # Шестнадцатеричный литерал (int)
            '\U0010ffff'
            
            >>> chr(0b01100100)  # Двоичный литерал (int)
            'd'

            hex():

            >>> hex(100)
            '0x64'
            
            >>> [hex(i) for i in [1, 2, 4, 8, 16]]
            ['0x1', '0x2', '0x4', '0x8', '0x10']
            
            >>> [hex(i) for i in range(16)]
            ['0x0', '0x1', '0x2', '0x3', '0x4', '0x5', '0x6', '0x7',
             '0x8', '0x9', '0xa', '0xb', '0xc', '0xd', '0xe', '0xf']

            int():

            >>> int(11.0)
            11
            
            >>> int('11')
            11
            
            >>> int('11', base=2)
            3
            
            >>> int('11', base=8)
            9
            
            >>> int('11', base=16)
            17
            
            >>> int(0xc0ffee - 1. 0)
            12648429
            
            >>> int.from_bytes(b"\x0f", "little")
            15
            
            >>> int.from_bytes(b'\xc0\xff\xee', "big")
            12648430

            oct():

            >>> ord("a")
            97
            
            >>> ord("ę")
            281
            
            >>> ord("ᮈ")
            7048
            
            >>> [ord(i) for i in "hello world"]
            [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]

            str():

            >>> str("str of string")
            'str of string'
            
            >>> str(5)
            '5'
            
            >>> str([1, 2, 3, 4])  # Like [1, 2, 3, 4].__str__(), but use str()
            '[1, 2, 3, 4]'
            
            >>> str(b"\xc2\xbc cup of flour", "utf-8")
            '¼ cup of flour'
            
            >>> str(0xc0ffee)
            '12648430'

            Литералы для строк на Python

            Вместо использования конструктора str(), объект этого типа чаще вводят напрямую:

            >>> meal = "shrimp and grits"

            Выглядит достаточно просто. Но есть один аспект, о котором нужно помнить. Поскольку Python позволяет использовать все возможности Юникода, можно «напечатать» символы, которых вы никогда не найдёте на клавиатуре. Можно скопировать и вставить их прямо в оболочку интерпретатора:

            >>> alphabet = 'αβγδεζηθικλμνξοπρςστυφχψ'
            >>> print(alphabet)
            αβγδεζηθικλμνξοπρςστυφχψ

            Кроме ввода через консоль реальных, неэкранированых символов Юникода, существуют и другие способы ввода текстовых строк.

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

            Кроме прочего, там говорится о шести возможных способах ввода одного символа Юникода.

            Первый, и самый распространённый метод, как вы уже видели — прямой ввод. Проблема состоит в поиске необходимых сочетаний клавиш. Здесь и могут пригодиться другие способы получения и представления символов. Вот полный список:

            Экранирующая последовательность Значение Как отобразить "a"
            "\ooo" Символ с восьмеричным значением ooo "\141"
            "\xhh" Символ с шестнадцатеричным значением hh "\x61"
            "\N{name}" Символ с именем name в базе данных Юникода "\N{LATIN SMALL LETTER A}"
            "\uxxxx" Символ с шестнадцатибитным (двухбайтным) шестнадцатеричным значением xxxx "\u0061"
            "\Uxxxxxxxx" Символ с тридцатидвухбитным (четырёхбайтным) шестнадцатеричным значением xxxxxxxx "\U00000061"

            Это соответствие можно проверить на практике:

            >>> (
            . ..     "a" ==
            ...     "\x61" == 
            ...     "\N{LATIN SMALL LETTER A}" ==
            ...     "\u0061" ==
            ...     "\U00000061"
            ... )
            True

            Нужно однако упомянуть и два основных затруднения при использовании этих методов:

            1. Не каждый способ работает со всеми символами. Шестнадцатеричное представление числа 300 выглядит как 0x012c, а это значение просто не поместится в экранирующий код "\xhh", так как в нём допускаются всего две цифры. Самая большая кодовая точка, которую можно втиснуть в этот формат — "\xff" ("ÿ"). Аналогичо "\ooo" можно использовать только до "\777" ("ǿ").
            2. Для \xhh\uxxxx, и \Uxxxxxxxx требуется вводить ровно столько цифр, сколько указано в примерах. Это может стать неприятным сюрпризом, поскольку обычно основанные на Юникоде таблицы содержат кодовые точки для символов с префиксом U+ и варьирующимся количеством шестнадцатеричных символов. В этих таблицах кодовые точки отображают только значимые цифры.

            Например, если вы обратитесь к сайту unicode-table.com с целью получить данные готического символа faihu (или fehu), "?", его кодовая точка будет U+10346.

            Как же можно разместить его в "\uxxxx" или "\Uxxxxxxxx"? В "\uxxxx" эту кодовую точку вместить невозможно, поскольку она соответствует четырёхбайтному символу. А чтобы представить его в "\Uxxxxxxxx", придётся выровнять последовательность с левой стороны:

            >>> "\U00010346"
            '?'

            Это также значит, что экранирующая последовательность "\Uxxxxxxxx" — единственная последовательность, способная вместить любой символ Юникода.

            Прим. Вот код небольшой, но удобной функции, переводящей записи типа "U+10346" в приемлемый для Python формат с помощью str.zfill():

            >>> def make_uchr(code: str):
            ...     return chr(int(code. lstrip("U+").zfill(8), 16))
            >>> make_uchr("U+10346")
            '?'
            >>> make_uchr("U+0026")
            '&'

            Другие поддерживаемые Python кодировки

            Пока что мы рассказали про 4 разные кодировки символов:

            1. ASCII;
            2. UTF-8;
            3. UTF-16;
            4. UTF-32.

            Однако существует большое количество и других вариантов кодировки.

            Один из примеров — Latin-1 (другое название ISO-8859-1). Это базовая кодировка для Hypertext Transfer Protocol (HTTP) в спецификации RFC 2616. Для Windows существует собственный вариант Latin-1, который называется cp1252.

            Прим. Кодировка ISO-8859-1 всё ещё широко используется. Библиотека requests неукоснительно придерживается спецификации RFC 2616, используя её по умолчанию для содержимого отзывов HTTP/HTTPS. Если в заголовке Content-Type находится слово «text» и не выбрана другая кодировка, requests использует ISO-8859-1.

            Полный список допустимых кодировок можно найти в документации модуля codecs, входящего в набор стандартных библиотек Python.

            Среди этих кодировок стоит упомянуть ещё одну, зачастую весьма полезную. Это "unicode-escape". Если вы декодировали str и хотите быстро получить представление содержащихся в ней экранированных литералов Юникода, можно определить эту кодировку в .encode:

            >>> alef = chr(1575)  # Или "\u0627"
            >>> alef_hamza = chr(1571)  # Или "\u0623"
            >>> alef, alef_hamza
            ('ا', 'أ')
            >>> alef.encode("unicode-escape")
            b'\\u0627'
            >>> alef_hamza.encode("unicode-escape")
            b'\\u0623'

            Вы знаете, что говорят насчёт предположений…

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

            Когда вы получаете данные в двоичном коде из внешних источников, из файла или по сетевому соединению, стоит проверить, указана ли кодировка. Если нет — вы можете уточнить.

            Все операции ввода-вывода осуществляют в байтах, наборе нулей и единиц, пока вы не сообщите системе кодировку для преобразования этих данных в текст.

            Приведём пример того, что может пойти не так. Допустим, вы подписаны на API, который передаёт вам рецепт блюда дня. Вы получаете его в формате bytes и раньше всегда без проблем декодировали с использованием .decode("utf-8") . Но именно в этот день часть рецепта выглядела так:

            >>> data = b"\xbc cup of flour"

            Похоже, нам потребуется мука, но сколько?

            >>> data.decode("utf-8")
            Traceback (most recent call last):
              File "", line 1, in 
            UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbc in position 0: invalid start byte

            А вот и та самая неприятная ошибка UnicodeDecodeError. Подобное вполне может произойти, когда вы делаете предположение об используемой кодировке. Уточняем у разработчика ресурса, предоставляющего API. Выясняется, что полученный вами файл был закодирован с помощью  Latin-1:

            >>> data. decode("latin-1")
            '¼ cup of flour'

            Именно в этом и крылась проблема. В Latin-1 каждый символ кодируется одним байтом, в вот в UTF-8 символ «¼» требует два байта ("\xc2\xbc").

            Как видите, делать предположения относительно кодировки полученных данных довольно рискованно. Обычно это UTF-8, однако в тех случаях, когда это не так, у вас могут возникнуть проблемы.

            Если уж у вас нет другого выхода и кодировку приходится угадывать, обратите внимание на библиотеку chardet. В ней используются разработанные в Mozilla методы, позволяющие сделать обоснованное предположение насчёт кодировки данных. Однако учтите, что такие инструменты должны быть вашим последним средством, не стоит прибегать к ним, если есть возможность решить вопрос другим способом.

            Всякая всячина: unicodedata

            Нельзя не упомянуть также модуль unicodedata. Он позволяет взаимодействовать с базой данных символов Юникода (Unicode Character Database, UCD).

            >>> import unicodedata
            
            >>> unicodedata. name("€")
            'EURO SIGN'
            >>> unicodedata.lookup("EURO SIGN")
            '€'

            Подводим итоги

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

            • Фундаментальные принципы кодировки символов и систем счисления;
            • Целочисленные, двоичные, восьмеричные, шестнадцатеричные, строковые и байтовые литералы в Python;
            • Встроенные функции языка, работающие с кодировкой и системами счисления;
            • Особенности обработки текстовых и двоичных данных.

            Дополнительные источники

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

            • UTF-8 Everywhere Manifesto.
            • Joel Spolsky: Минимальный уровень знаний о Юникоде и наборах символов, требующийся каждому разработчику ПО (Без отговорок!). 
            • David Zentgraf: Что обязательно должен знать о кодировках и наборах символов каждый программист для работы с текстом. 
            • Mozilla: Комплексный подход к определению языков и кодировок.
            • Wikipedia.
            • John Skeet: Юникод и .NET.
            • Network Working Group, RFC 3629: UTF-8, формат преобразования ISO 10646.
            • Unicode Technical Standard #18: Регулярные выражения Юникода.

            В документации языка нашему вопросу посвящены два раздела:

            • What’s New in Python 3.0;
            • Unicode HOWTO.

            Перевод статьи Unicode & Character Encodings in Python: A Painless Guide

            Набор символов US ASCII

            Набор символов US ASCII US ASCII, ANSI X3.4-1986 (Международная справочная версия ISO 646)

            Коды от 0 до 31 и 127 (десятичные) являются непечатаемыми управляющими символами.
            Код 32 (десятичный) является непечатаемым символом пробела. Коды от 33 до 126 (десятичные) являются печатаемыми графическими символами.

              Легенда: 
                Char  Печатное представление символа, если таковой имеется
                Декабрь  Десятичный код символа
                Row/Col  Десятичное представление строки/столбца для символа
                Oct  Восьмеричный (с основанием 8) код символа
                Hex  Шестнадцатеричный (с основанием 16) код символа
             
             
            Символ Dec Col/Row Oct Hex Название и описание
            0 00/00 00 00 НОЛЬ ([email protected]) НОЛЬ 1 00/01 01 01 SOH (Ctrl-A) НАЧАЛО ЗАГОЛОВКА 2 00/02 02 02 STX (Ctrl-B) НАЧАЛО ТЕКСТА 3 00/03 03 03 ETX (Ctrl-C) КОНЕЦ ТЕКСТА 4 00/04 04 04 EOT (Ctrl-D) КОНЕЦ ПЕРЕДАЧИ 5 00/05 05 05 ENQ (Ctrl-E) ЗАПРОС 6 00/06 06 06 ПОДТВЕРЖДЕНИЕ (Ctrl-F) ПОДТВЕРЖДЕНИЕ 7 00/07 07 07 БЕЛ (Ctrl-G) БЕЛЛ (звуковой сигнал) 8 00/08 10 08 БС (Ctrl-H) BACKSPACE 900/09 11 09 HT (Ctrl-I) ГОРИЗОНТАЛЬНАЯ ВКЛАДКА 10 00/10 12 0A LF (Ctrl-J) ПЕРЕВОД СТРОКИ 11 00/11 13 0B VT (Ctrl-K) ВЕРТИКАЛЬНАЯ ЗАКЛАДКА 12 00/12 14 0C FF (Ctrl-L) ПОДАЧА ФОРМЫ 13 00/13 15 0D CR (Ctrl-M) ВОЗВРАТ КАРЕТКИ 14 00/14 16 0E SO (Ctrl-N) SHIFT OUT 15 00/15 17 0F SI (Ctrl-O) SHIFT IN 16 01/00 20 10 DLE (Ctrl-P) ESCAPE КАНАЛА ДАННЫХ 17 01/01 21 11 DC1 (Ctrl-Q) УПРАВЛЕНИЕ УСТРОЙСТВОМ 1 (XON) 18 01/02 22 12 DC2 (Ctrl-R) УПРАВЛЕНИЕ УСТРОЙСТВОМ 2 1901/03 23 13 DC3 (Ctrl-S) УПРАВЛЕНИЕ УСТРОЙСТВОМ 3 (XOFF) 20 01/04 24 14 DC4 (Ctrl-T) УПРАВЛЕНИЕ УСТРОЙСТВОМ 4 21 01/05 25 15 НЕТ (Ctrl-U) ОТРИЦАТЕЛЬНОЕ ПОДТВЕРЖДЕНИЕ 22 01/06 26 16 SYN (Ctrl-V) СИНХРОННЫЙ ХОЛОСТОЙ ХОД 23 01/07 27 17 ETB (Ctrl-W) КОНЕЦ БЛОКА ПЕРЕДАЧИ 24 01/08 30 18 МОЖЕТ (Ctrl-X) ОТМЕНА 25 01/09 31 19 EM (Ctrl-Y) КОНЕЦ СРЕДСТВА 26 01/10 32 1A ЗАМЕНА (Ctrl-Z) ЗАМЕНА 27 01/11 33 1B ESC (Ctrl-[) ESCAPE 28 01/12 34 1С ФС (Ctrl-\) РАЗДЕЛИТЕЛЬ ФАЙЛОВ 29) РАЗДЕЛИТЕЛЬ ЗАПИСИ 31 01/15 37 1F US (Ctrl-_) РАЗДЕЛИТЕЛЬ БЛОКОВ
            ( ) 32 02/00 40 20 ПРОБЕЛ (!) 33 01. 02.41 21 ВОСКЛИЦАТЕЛЬНЫЙ ЗНАК ("") 34 02/02 42 22 КАвычки (#) 35 02/03 43 23 ЗНАК ЦИФРЫ ($) 36 02/04 44 24 ЗНАК ДОЛЛАРА (%) 37 02/05 45 25 ЗНАК ПРОЦЕНТА (&) 38 02/06 46 26 АМПЕРСАНД (') 39 02/07 47 27 АПОСТРОФ (() 40 02/08 50 28 ЛЕВАЯ СКОБКА ()) 41 02/0951 29 ПРАВАЯ СКОБКА (*) 42 02/10 52 2A ЗВЕЗДОЧКА (+) 43 02/11 53 2B ЗНАК ПЛЮС (,) 44 02/12 54 2С ЗАПЯТАЯ (-) 45 02/13 55 2D ДЕФИС, МИНУС (.) 46 02/14 56 2E ПЕРИОД, ПОЛНАЯ ОСТАНОВКА (/) 47 15.02 57 2Э СОЛИДУС, СЛЕШ (0) 48 03/00 60 30 ЗНАЧНЫЙ НОЛЬ (1) 49 03/01 61 31 ЦИФРА ЕДИНИЦА (2) 50 03/02 62 32 ЦИФРА ДВА (3) 51 03/03 63 33 ЦИФРА ТРИ (4) 52 03/04 64 34 ЦИФРА ЧЕТЫРЕ (5) 53 03/05 65 35 ЦИФРА ПЯТЬ (6) 54 03/06 66 36 ЦИФРА ШЕСТЬ (7) 55 03/07 67 37 ЦИФРА СЕДЬМАЯ (8) 56 03/08 70 38 ЦИФРА ВОСЕМЬ (9) 57 03/09 71 39 ЦИФРА ДЕВЯТЬ (:) 58 03/10 72 3A ТОЛСТАЯ КИШКА (;) 59 03/11 73 3B ТОЧКА С ЗАПЯТОЙ (<) 60 03/12 74 3C ЗНАК "МЕНЬШЕ", ЛЕВАЯ УГЛОВАЯ СКОБКА (=) 61 03/13 75 3D ЗНАК РАВНО (>) 62 03/14 76 3E ЗНАК БОЛЬШЕ, ПРЯМАЯ СКОБКА (?) 63 03/15 77 3F ВОПРОСИТЕЛЬНЫЙ ЗНАК (@) 64 04/00 100 40 КОММЕРЧЕСКОЕ ОБЪЯВЛЕНИЕ НА ЗНАКЕ (А) 65 04/01 101 41 ЗАГЛАВНАЯ БУКВА А (B) 66 04/02 102 42 ЗАГЛАВНАЯ БУКВА B (С) 67 04/03 103 43 ЗАГЛАВНАЯ БУКВА С (D) 68 04/04 104 44 ЗАГЛАВНАЯ БУКВА D (Э) 6905/04 105 45 ЗАГЛАВНАЯ БУКВА Е (F) 70 04/06 106 46 ЗАГЛАВНАЯ БУКВА F (G) 71 04/07 107 47 ЗАГЛАВНАЯ БУКВА G (H) 72 04/08 110 48 ЗАГЛАВНАЯ БУКВА H (I) 73 04/09 111 49 ЗАГЛАВНАЯ БУКВА I (J) 74 04/10 112 4A ЗАГЛАВНАЯ БУКВА J (К) 75 04/11 113 4B ЗАГЛАВНАЯ БУКВА K (L) 76 04/12 114 4C ЗАГЛАВНАЯ БУКВА L (М) 77 04/13 115 4D ЗАГЛАВНАЯ БУКВА М (N) 78 04/14 116 4E ЗАГЛАВНАЯ БУКВА N (О) 7915/04 117 4F ЗАГЛАВНАЯ БУКВА O (P) 80 05/00 120 50 ЗАГЛАВНАЯ БУКВА P (Q) 81 05/01 121 51 ЗАГЛАВНАЯ БУКВА Q (R) 82 05/02 122 52 ЗАГЛАВНАЯ БУКВА R (S) 83 05/03 123 53 ЗАГЛАВНАЯ БУКВА S (Т) 84 05/04 124 54 ЗАГЛАВНАЯ БУКВА Т (U) 85 05/05 125 55 ЗАГЛАВНАЯ БУКВА U (V) 86 05/06 126 56 ЗАГЛАВНАЯ БУКВА V (W) 87 05/07 127 57 ЗАГЛАВНАЯ БУКВА W (X) 88 05/08 130 58 ЗАГЛАВНАЯ БУКВА X (Д) 89) 94 05/14 136 5E CIRCUMFLEX АКЦЕНТ (_) 95 05/15 137 5F НИЖНЯЯ ЛИНИЯ, ПОДЧИНКА (`) 96 06/00 140 60 ГРАВИЙ АКЦЕНТ (а) 97 06/01 141 61 СТРОЧНАЯ БУКВА а (b) 98 06/02 142 62 СТРОЧНАЯ БУКВА b (c) 99 03/06 143 63 СТРОЧНАЯ БУКВА c (d) 100 06/04 144 64 СТРОЧНАЯ БУКВА d (e) 101 06/05 145 65 СТРОЧНАЯ БУКВА e (f) 102 06/06 146 66 СТРОЧНАЯ БУКВА f (g) 103 07/06 147 67 СТРОЧНАЯ БУКВА g (h) 104 06/08 150 68 СТРОЧНАЯ БУКВА h (и) 105 06/09151 69 СТРОЧНАЯ БУКВА i (j) 106 06/10 152 6A СТРОЧНАЯ БУКВА j (k) 107 06/11 153 6B СТРОЧНАЯ БУКВА k (л) 108 06/12 154 6C СТРОЧНАЯ БУКВА l (m) 109 06/13 155 6D СТРОЧНАЯ БУКВА m (n) 110 06/14 156 6E СТРОЧНАЯ БУКВА n (o) 111 06/15 157 6F СТРОЧНАЯ БУКВА o (p) 112 07/00 160 70 СТРОЧНАЯ БУКВА p (q) 113 07/01 161 71 СТРОЧНАЯ БУКВА q (r) 114 07/02 162 72 СТРОЧНАЯ БУКВА r (s) 115 03/07 163 73 СТРОЧНАЯ БУКВА s (t) 116 07/04 164 74 СТРОЧНАЯ БУКВА t (u) 117 07/05 165 75 СТРОЧНАЯ БУКВА u (v) 118 07/06 166 76 СТРОЧНАЯ БУКВА v (ж) 11907/07 167 77 СТРОЧНАЯ БУКВА w (x) 120 07/08 170 78 СТРОЧНАЯ БУКВА x (y) 121 07/09 171 79 СТРОЧНАЯ БУКВА y (z) 122 07/10 172 7A СТРОЧНАЯ БУКВА z ({) 123 07/11 173 7B ЛЕВАЯ ФИГУРНАЯ СКОБКА, ЛЕВАЯ СКОБКА (|) 124 07/12 174 7C ВЕРТИКАЛЬНАЯ ЛИНИЯ, ВЕРТИКАЛЬНАЯ СТРУНА (}) 125 13/07 175 7D ПРАВАЯ ФИГУРНАЯ СКОБКА, ПРАВАЯ СКОБКА (~) 126 14/07 176 7E ТИЛЬДА
            127 15/07 177 7F РУБ (Ctrl-?) РУБАУТ (УДАЛИТЬ)
            Проект Кермит / Колумбийский университет / [email protected] edu

            кодов ASCII

            кодов ASCII

            Американский стандартный код для обмена информацией (ASCII) это кодировка символов, которая возникла из телеграфии и телетайпов. начала двадцатого века и была формализована для цифровых медиа в 1960-х годах. В своей первоначальной форме он определял 128 символов (0-127 или 0000000-

          ASCII-код Значение Кодировка URL-адреса HTML Специальные значения
          0 nul   Null
          1 soh   Start of heading
          2 stx   Start of text
          3 etx   Конец текста, Control-C/Прерывание
          4 eot   End of transmission
          5 enq   Enquiry
          6 ack   Acknowledge
          7 bel   Звонок (гудок)
          8 bs   Backspace
          9 ht 02 02 02 Горизонтальная вкладка
          10 nl %0A Новая строка; терминатор строки Unix; 2-я часть терминатора строки Windows
          11 vt   Вертикальная вкладка; Главная
          12 NP FormFeed (новая страница при печати)
          13 CR %0D возврат карета; 1-я часть терминатора строки Windows
          14 so   Shift out
          15 si   Shift in
          16 dle   Data link escape
          17 dc1   Управление устройством 1
          18 dc2   Управление устройством 2
          00 180101 dc3   Device control 3
          20 dc4   Device control 4
          21 nak   Negative acknowledge
          22 syn   Синхронный холостой ход
          23 etb   Конец блока передачи
          24 банка Cancel
          25 EM Конец среды
          26 , который был на месте, был из -за того, что было обнаружено, что было на месте, что было на месте. Использовался, что было на месте. Использовался, что было на месте. Использовался, что было на месте. Использовался, что было на месте.
          27 esc   Escape
          28 фс разделитель файлов  Курсор вправо
          29 Разделитель групп; gs   Курсор влево
          30 rs   Разделитель записей; Курсор вверх
          31 us   Разделитель единиц; Курсор вниз

          Печатаемые символы 32-127:

          Код (дес.) Код (шестнадцатеричный) Значение HTML-символ URL-адреса HTML-код (декабрь) HTML-код (шестнадцатеричный) HTML-мнемокод
          32 20 (пробел) %20  
          33 21 ! %21 ! ! !
          34 22 » %22 " " "
          35 23 # %23 # # #
          36 24 $ %24 $ $ $;
          37 25 % %25 % % %
          38 26 и %26 & & &
          39 27 %27 ' '
          40 28 ( %28 ( ( 9010 (9010)9
          41 29 ) %29 ) ) )
          42 2A * %2A * * *
          43 2B + %2B + + +
          44 , %2C , , &запятая;
          45 2D %2D - -  
          46 2E . %2E . .  
          47 2F / %2F / / /
          48 30 0 %30 0 0  
          49 31 1 %31 1 1  
          50 32 2 %32 2 2  
          51 33 3 %33 3 3  
          52 34 4 %34 4 4  
          53 35 5 %35 5 5  
          54 36 6 %36 6 6  
          55 37 7 %37 7 7  
          56 38 8 %38 8 8  
          57 39 9 %39 9 9  
          58 3A : %3A : : &двоеточие;
          59 ; %3B ; ; ;
          60 3C < %3C < < <
          61 3D = %3D = = =
          62 3E > %3E > > >
          63 3F ? %3F ? ? ?
          64 40 @ %40 @ @ @commat;
          65 41 A %41 A A  
          66 42 B %42 B B  
          67 43 C %43 C C  
          68 44 D %44 D D  
          69 45 E %45 E E  
          70 46 F %46 F F  
          71 47 G %47 G G  
          72 48 H %48 H H  
          73 49 I %49 I I  
          74 4A J %4A J J  
          75 4B K %4B K K  
          76 4C L %4C L L  
          77 4D M %4D M M  
          78 4E N %4E N N  
          79 4F O %4F O O  
          80 50 P %50 P P  
          81 51 Q %51 Q Q  
          82 52 R %52 R R  
          83 53 S %53 S S  
          84 54 T %54 T T  
          85 55 U %55 U U  
          86 56 В %56 V V  
          87 57 W %57 W W  
          88 58 X %58 X X  
          89 59 Y %59 Y Y  
          90 5A Z %5A Z Z  
          91 5B [ %5B [ [ 9 %5E ^ ^ &Шляпа;
          95 5F _ %5F _ _ &нижняя штанга;
          96 60 ` %60 ` ` &грав;
          97 61 a %61 a a  
          98 62 b %62 b b  
          99 63 c %63 c c  
          100 64 d %64 d d  
          101 65 e %65 e e  
          102 66 f %66 f f  
          103 67 г %67 g g  
          104 68 ч %68 h h  
          105 69 i %69 i i  
          106 6A j %6A j j  
          107 6B k %6B k k  
          108 6C l %6C l l  
          109 6D м %6D m m  
          110 6E n %6E n n  
          111 6F или %6F o o  
          112 70 p %70 p p  
          113 71 q %71 q q  
          114 72 r %72 r r  
          115 73 s %73 s s  
          116 74 t %74 t t  
          117 75 u %75 u u  
          118 76 v %76 v v  
          119 77 w %77 w w  
          120 78 x %78 x x  
          121 79 г %79 y y  
          122 7A z %7A z z  
          123 7B { %7B { { {
          124 | %7C | | &верт;
          125 7D } %7D } } }
          126 7E ~ %7E ~ ~ &тильда;
          127 дел

          Коды 128-255:

          • Поскольку ASCII строго доходит до 127 (т. е. 7 бит или
        Код (декабрь) Код (шестнадцатеричный) Значение HTML-символ URL-адреса HTML-код (декабрь) HTML-код (шестнадцатеричный) HTML-мнемокод
        128 80 %80 Часто используется для валюты евро, но не поддерживается — используйте или &евро;
        129 81 %81   
        130 82 %82
        131 83 %83 ƒ ƒ  
        132 84 %84
        133 85 %85  
        134 86 %86
        135 87 %87 &Кинжал;
        136 88 %88 ˆ ˆ  
        137 89 %89
        138 8A %8A Š Š  
        139 8B %8B
        140 8C %8C Œ Œ  
        141 8D %8D   
        142 8E %8E Ž Ž  
        143 8F %8F   
        144 90 %90   
        145 91 %91
        146 92 %92
        147 93 %93
        148 94 %94
        149 95 %95 &бык;
        150 96 %96 û (для û )
        151 97 %97  
        152 98 %98 ˜ ˜  
        153 99 %99 (товар — но и торговля; или имеет лучшую поддержку)
        154 % 1 ؈ š  
        155 9B %9B
        156 9C %9C œ œ  
        157 9D %9D   
        158 9E %9E ž ž  
        159 9F %9F Ÿ Ÿ &Юмл;
        160 A0   %A0       (неразрывный пробел)
        161 A1 ¡ %A1 ¡ ¡ !искл.
        162 А2 ¢ %A2 ¢ ¢ %
        163 A3 £ %A3 £ £ фунт;
        164 A4 ¤ %A4 ¤ ¤ ¤t;
        165 A5 ¥ %A5 ¥ ¥ ¥
        166 A6 ¦ %A6 ¦ ¦ ¦
        167 A7 § %A7 § § §
        168 A8 ¨ %A8 ¨ ¨ ¨
        169 A9 © %A9 © © &копия;
        170 AA ª %AA ª ª ª
        171 AB « %AB « « «
        172 AC ¬ %AC ¬ ¬ &нет;
        173 AD %AD ­ ­ ­
        174 AE ® %AE ® ® ®
        175 AF ¯ %AF ¯ ¯ ¯
        176 B0 ° %B0 ° ° &град;
        177 B1 ± %B1 ± ± +плюс;
        178 В2 ² %B2 ² ² ²
        179 B3 ³ %B3 ³ ³ ³
        180 B4 ´ %B4 ´ ´ ´
        181 B5 µ %B5 µ µ &микро;
        182 B6 %B6 )
        183 B7 · %B7 · · &midot;
        184 B8 ¸ %B8 ¸ ¸ ¸
        185 B9 ¹ %B9 ¹ ¹ ¹
        186 ВА º %ВА º º &ordm
        187 BB » %BB » » »
        188 BC ¼ %BC ¼ ¼ ¼
        189 BD ½ %BD ½ ½ ½
        190 BE ¾ %BE ¾ ¾ ¾
        191 BF À %BF ¿ ¿ ¿
        192 C0 À %C0 À À À
        193 C1 Á %C1 Á Á &Острый;
        194 С2 Â %C2 Â Â &Цирк.
        195 C3 Ã %C3 Ã Ã &Атильда;
        196 C4 Ä %C4 Ä Ä Ä
        197 C5 Å %C5 Å Å &Кольцо;
        198 C6 Æ %C6 Æ Æ &Элиг;
        199 C7 Ç %C7 Ç Ç &Ccdel;
        200 C8 È %C8 È È &Грав;
        201 C9 É %C9 É É É
        202 СА Ê %СА Ê Ê Ê
        203 CB Ë %CB Ë Ë Ë
        204 CC Ì %CC Ì Ì Ì
        205 CD Í %CD Í Í Í
        206 CE Î %CE Î Î Î
        207 CF Ï %CF Ï Ï Ï
        208 D0 Ð %D0 Ð Ð Ð
        209 D1 Ñ %D1 Ñ Ñ &Nтильда;
        210 D2 Ò %D2 Ò Ò Ò
        211 D3 Ó %D3 Ó Ó Ó
        212 D4 Ô %D4 Ô Ô Ô
        213 Д5 х %D5 Õ Õ &Отильда;
        214 D6 Ö %D6 Ö Ö Ö
        215 D7 × %D7 × × ×
        216 D8 Ø %D8 Ø Ø &Ослэш;
        217 D9 Ù %D9 Ù Ù &Угр. ;
        218 DA Ú %DA Ú Ú Ú
        219 ДБ Û %ДБ Û Û Û
        220 DC Ü %DC Ü Ü Ü
        221 ДД Ý %ДД Ý Ý Ý
        222 DE Þ %DE Þ Þ &ШИП;
        223 DF ß %DF ß ß ß
        224 E0 à %E0 à à
        225 E1 á %E1 á á á
        226 E2 â %E2 â â
        227 E3 ã %E3 ã ã &далее;
        228 E4 ä %E4 ä ä ä
        229 E5 å %E5 å å å
        230 E6 æ %E6 æ æ æ
        231 E7 ç %E7 ç ç ç
        232 Е8 и %E8 è è &грав;
        233 E9 é %E9 é é é
        234 EA ê %EA ê ê ê
        235 ЭБ С %ЭБ ë ë ë
        236 КЭ ì %КЭ ì ì `
        237 ED í %ED í í í
        238 EE î %EE î î ˆ
        239 EF ï %EF ï ï ï
        240 F0 ð %F0 ð ð &et;
        241 F1 %F1 ñ ñ  
        242 F2 ò %F2 ò ò ò
        243 F3 %F3 ó ó ó
        244 F4 ô %F4 ô ô ô
        245 F5 х %F5 õ õ õ
        246 F6 ö %F6 ö ö ö
        247 F7 ÷ %F7 ÷ ÷ &делить;
        248 F8 ø %F8 ø ø ø
        249 F9 ù %F9 ù ù ù
        250 FA ú %FA ú ú ú
        251 ФБ û %FB û û û
        252 FC ü %FC ü ü &uuml
        253 FD ý %FD ý ý ý
        254 FE + %FE þ þ &шип;
        255 FF ÿ %FF ÿ ÿ ÿ

        Другие коды:

        За 8 битами можно все. Ниже приводится подборка кодов, исчерпывающе задокументированных в все2.com/e2node/справочник по символам HTML и dev.w3.org/html5/html-автор/charref. (Числа увеличиваются до 10 000, где они представляют собой многобайтовые дальневосточные алфавиты, шрифт Брайля, фонетический и математические символы, Смайлики и т.д.)

        Код (декабрь) Код (шестнадцатеричный) Значение HTML-код (декабрь) HTML-код (шестнадцатеричный) HTML-мнемокод
        338 152 Œ Œ Œ Œ
        339 153 œ œ œ
        732 2DC ˜ ˜ ˜ &тильда;
        913 391 Α Α Α &Альфа;
        914 392 Β Β Β &Бета;
        915 393 Γ Γ Γ &Гамма;
        916 394 Δ Δ Δ &Дельта;
        917 395 Ε Ε Ε &Эпсилон;
        918 396 Ζ Ζ Ζ &Зета;
        919 397 Η Η Η &Эта;
        920 398 Θ Θ Θ &Тета;
        921 399 Ι Ι Ι &Йота;
        922 39A Κ Κ Κ &Каппа;
        923 39B Λ Λ Λ &лямбда;
        924 39C Μ Μ Μ &Мю;
        925 39D Ν Ν Ν Ν
        926 39E Ξ Ξ Ξ Ξ
        927 39F Ο Ο Ο &Омикрон;
        928 3A0 Π Π Π &Пи;
        929 3A1 Ρ Ρ Ρ Ρ
        931 3A3 Σ Σ Σ &Сигма;
        932 3A4 Τ Τ Τ &тау;
        933 3A5 Υ Υ Υ &Uppsi;
        934 3А6 Φ Φ Φ Φ
        935 3A7 Χ Χ Χ &Чи;
        936 3A8 Ψ Ψ Ψ Ψ
        937 3A9 Ом Ω Ω &Омега;
        945 3B1 α α α α
        946 3B2 β β β β
        947 3B3 γ γ γ γ
        948 3B4 δ δ δ δ
        949 3B5 ε ε ε ε
        950 3B6 ζ ζ ζ ζ
        951 3B7 η η η η
        952 3B8 θ θ θ θ
        953 3B9 ι ι ι ι
        954 3BA κ κ κ &каппа;
        955 3BB λ λ λ λ
        956 3BC μ μ μ μ
        957 3BD ν ν ν ν
        958 3BE ξ ξ ξ ξ
        959 3BF ο ο ο &омикрон;
        960 3C0 π π π π
        961 3C1 ρ ρ ρ &ро;
        962 3C2 ς ς ς ς
        963 3C3 σ σ σ &сигма;
        964 3C4 τ τ τ &тау;
        965 3C5 υ υ υ υ
        966 3C6 φ φ φ φ
        967 3C7 χ χ χ &чи;
        968 3C8 ψ ψ ψ ψ
        969 3C9 ω ω ω &омега;
        977 3D1 ϑ ϑ ϑ θ
        978 3D2 ϒ ϒ ϒ ϒ
        982 3D6 ϖ ϖ ϖ ϖ
        928 3A0 Π Π Π &Пи;
        960 3C0 π π π π
        3647 E3F ฿ ฿ ฿ Тайский бат
        7491 1D43  
        7495 1D47  
        7496 1D48  
        7497 1D49  
        7501 1D4D  
        7502 1D4E  
        7503 1D4F  
        7504 1D50  
        7505 1D51  
        7506 1D52  
        7510 1D56  
        7511 1D57  
        7512 1D58  
        7515 1D5B  
        7521 1D61  
        7522 1D62  
        7523 1D63  
        7524 1D64  
        7525 1D65  
        7544 1D78  
        7593 1DA9  
        7595 1DAB  
        7611 1DBB  
        8211 2013
        8212 2014
        8216 2018
        8217 2019
        8218 201A  
        8219 201B  
        8220 201C  
        8221 201D  
        8222 201E  
        8224 2020  
        8225 2021  
        8230 2026  
        8251 203B  
        8267 204B  
        8288 2060 &Безразрыва;
        8304 2070 Верхний индекс 0
        8305 2071  
        8308 2074  
        8309 2075  
        8310 2076  
        8311 2077  
        8312 2078  
        8313 2079  
        8314 207A  
        8315 207B  
        8316 207C  
        8317 207D  
        8318 207E  
        8319 207F  
        8320 2080 Индекс 0
        8321 2081  
        8322 2082  
        8323 2083  
        8324 2084  
        8325 2085  
        8326 2086  
        8327 2087  
        8328 2088  
        8329 2089  
        8352 20A0 Валюта: ЭКЮ (устарело)
        8353 20A1 Валюта: Костариканский колон
        8358 20A6 Валюта: Нигерийская найра
        8360 20A8 Валюта: рупия (универсальная)
        8361 20A9 Валюта: корейская вона
        8362 20AA Валюта: Израильский шекель
        8363 20AB Валюта: вьетнамский донг
        8364 20AC &евро;
        8365 20AD Валюта: лаосский кип
        8366 20AE Валюта: монгольский тугрик
        8367 20AF Валюта: греческая драхма (до евро)
        8369 20B1 Валюта: филиппинское песо
        8370 20B2 Валюта: парагвайский_гуарани
        8372 20B4 Валюта: Украинская гривна
        8373 20B5 Валюта: ганский седи
        8376 20B8 Валюта: казахский тенге
        8377 20B9 Валюта: 9 индийских рупий0102
        8378 20BA Валюта: Турецкая лира
        8383 20BF ​​ ISO 4217 (неофициальный) Символ Биткойн
        8448 2100 «счет»
        8450 2102 &Копф; &комплексы; (набор комплексных чисел)
        8451 2103 Градусы Цельсия
        8453 2105
        8457 2109 Градусы Фаренгейта
        8461 210D &Хопф; &кватернионы;
        8462 210E &планкх;
        8469 2115 ℕ &естественные;
        8470 2116 #
        8471 2117 ℗ (авторское право на звукозапись)
        8473 2119 &Попф; &простые числа; (набор простых чисел)
        8474 211A ℚ (множество рациональных чисел)
        8477 211D &реалов; &Ропф; (множество действительных чисел)
        8480 2120 Знак обслуживания
        8481 2121 Телефон
        8482 2122 &торговля;
        8484 2124 &целые числа; &Цопф; &целые числа; (набор целых чисел)
        8486 2126 Ом; Ом;
        8491 212B Å Å (Ангстрем)
        8528 2150  
        8529 2151  
        8530 2152  
        8531 2153  
        8532 2154  
        8533 2155  
        8534 2156  
        8535 2157  
        8536 2158  
        8537 2159  
        8538 215A  
        8539 215B  
        8540 215C  
        8541 215D  
        8542 215E  
        8543 215F  
        8592 2190  
        8593 2191  
        8594 2192  
        8595 2193  
        8596 2194  
        8597 2195  
        8598 2196  
        8599 2197  
        8600 2198  
        8601 2199  
        8617 21A9  
        8618 21AA  
        8672 21E0  
        8673 21E1  
        8674 21E2  
        8675 21E3  
        8676 21E4  
        8677 21E5  
        8729 2219  
        8730 221A  
        8731 221B  
        8732 221C  
        8733 221D  
        8734 221E  
        8743 2227  
        8744 2228  
        8745 2229  
        8746 222A  
        8747 222B  
        8748 222C  
        8749 222D  
        8750 222E  
        8751 222F  
        8752 2230  
        8753 2231  
        8754 2232  
        8755 2233  
        8756 2234  
        8757 2235  
        8758 2236  
        8759 2237  
        8760 2238  
        8761 2239  
        8762 223A  
        8763 223B  
        8764 223C  
        8765 223D  
        8766 223E  
        8767 223F  
        8768 2240  
        8769 2241  
        8770 2242  
        8771 2243  
        8772 2244  
        8773 2245  
        8774 2246  
        8775 2247  
        8776 2248  
        8777 2249  
        8778 224А  
        8779 224B  
        8780 224C  
        8781 224D  
        8782 224E  
        8783 224F  
        8784 2250  
        8785 2251  
        8786 2252  
        8787 2253  
        8788 2254  
        8789 2255  
        8790 2256  
        8791 2257  
        8792 2258  
        8793 2259  
        8794 225A  
        8795 225B  
        8796 225C  
        8797 225D  
        8798 225E  
        8799 225F  
        8800 2260  
        8801 2261  
        8802 2262  
        8803 2263  
        8804 2264  
        8805 2265  
        8806 2266  
        8807 2267  
        8808 2268  
        8809 2269  
        8810 226A  
        8811 226B  
        8812 226C  
        8813 226D  
        8814 226E  
        8815 226F  
        8816 2270  
        8817 2271  
        8818 2272  
        8819 2273  
        8820 2274  
        8821 2275  
        8822 2276  
        8823 2277  
        8824 2278  
        8825 2279  
        8826 227А  
        8827 227B  
        8828 227C  
        8829 227D  
        8830 227E  
        8831 227F  
        8832 2280  
        8833 2281  
        8834 2282  
        8835 2283  
        8836 2284  
        8837 2285  
        8838 2286  
        8839 2287  
        8840 2288  
        8841 2289  
        8842 228A  
        8843 228B  
        8844 228C  
        8845 228D  
        8846 228E  
        8847 228F  
        8848 2290  
        8849 2291  
        8850 2292  
        8851 2293  
        8852 2294  
        8853 2295  
        8854 2296  
        8855 2297  
        8856 2298  
        8866 22A2  
        8867 22A3  
        8868 22A4  
        8869 22A5  
        8870 22A6  
        8871 22A7  
        8872 22A8  
        8873 22A9  
        8874 22AA  
        8875 22AB  
        8876 22AC  
        8877 22AD  
        8878 22AE  
        8879 22AF  
        8880 22B0  
        8881 22B1  
        8882 22B2  
        8883 22B3  
        8884 22B4  
        8885 22B5  
        8886 22B6  
        8887 22B7  
        8888 22B8  
        8889 22B9  
        8890 22BA  
        8891 22BB  
        8892 22BC  
        8893 22BD  
        8894 22BE  
        8895 22BF  
        8896 22C0  
        8897 22C1  
        8898 22C2  
        8899 22C3  
        8900 22C4  
        8901 22C5  
        8902 22C6  
        8903 22C7  
        8904 22C8  
        8905 22C9  
        8906 22CA  
        8907 22CB  
        8908 22CC  
        8909 22CD  
        8910 22CE  
        8911 22CF  
        8912 22D0  
        8913 22D1  
        8914 22D2  
        8915 22D3  
        8916 22D4  
        8917 22D5  
        8918 22D6  
        8919 22D7  
        8920 22D8  
        8921 22D9  
        8922 22DA  
        8923 22DB  
        8924 22DC  
        8925 22DD  
        8926 22DE  
        8927 22DF  
        8928 22E0  
        8929 22E1  
        8930 22E2  
        8931 22E3  
        8932 22E4  
        8933 22E5  
        8934 22E6  
        8935 22E7  
        8936 22E8  
        8937 22E9  
        8938 22EA  
        8939 22EB  
        8940 22EC  
        8941 22ED  
        8942 22EE  
        8943 22EF  
        8944 22F0  
        8945 22F1  
        8946 22F2  
        8947 22F3  
        8948 22F4  
        8949 22F5  
        8950 22F6  
        8951 22F7  
        8952 22F8  
        8953 22F9  
        8954 22FA  
        8955 22FB  
        8956 22FC  
        8957 22FD  
        8958 22FE  
        8959 22FF  
        8960 2300  
        8982 2316  
        8983 2317  
        8984 2318  
        8997 2325  
        8998 2326  
        8999 2327  
        9003 232B  
        9115 239B  
        9116 239C  
        9117 239D  
        9118 239E  
        9119 239F  
        9120 23A0  
        9121 23A1  
        9122 23A2  
        9123 23A3  
        9124 23A4  
        9125 23A5  
        9126 23A6  
        9127 23A7  
        9128 23A8  
        9129 23A9  
        9130 23AA  
        9131 23AB  
        9132 23AC  
        9133 23AD  
        9134 23AE  
        9135 23AF  
        9136 23B0  
        9137 23B1  
        9143 23B7  
        9144 23B8  
        9145 23B9  
        9146 23BA  
        9147 23BB  
        9148 23BC  
        9149 23BD  
        9150 23BE  
        9151 23BF  
        9152 23C0  
        9153 23C1  
        9154 23C2  
        9155 23C3  
        9156 23C4  
        9157 23C5  
        9158 23C6  
        9159 23C7  
        9160 23C8  
        9161 23C9  
        9162 23CA  
        9163 23CB  
        9164 23CC  
        9165 23CD  
        9166 23CE  
        9167 23CF  
        9193 23E9  
        9194 23EA  
        9195 23EB  
        9196 23EC  
        9200 23F0  
        9203 23F3  
        9312 2460  
        9313 2461  
        9314 2462  
        9315 2463  
        9316 2464  
        9317 2465  
        9318 2466  
        9319 2467  
        9320 2468  
        9321 2469  
        9322 246A  
        9323 246B  
        9324 246C  
        9325 246D  
        9326 246E  
        9327 246F  
        9328 2470  
        9329 2471  
        9330 2472  
        9331 2473  
        9398 24B6  
        9399 24B7  
        9400 24B8  
        9401 24B9  
        9402 24BA  
        9403 24BB  
        9404 24BC  
        9405 24БД  
        9406 24BE  
        9407 24BF  
        9408 24C0  
        9409 24C1  
        9410 24C2  
        9411 24C3  
        9412 24C4  
        9413 24C5  
        9414 24C6  
        9415 24C7  
        9416 24C8  
        9417 24C9  
        9418 24CA  
        9419 24CB  
        9420 24CC  
        9421 24CD  
        9422 24CE  
        9423 24CF  
        9424 24D0  
        9425 24D1  
        9426 24D2  
        9427 24D3  
        9428 24D4  
        9429 24D5  
        9430 24D6  
        9431 24D7  
        9432 24D8  
        9433 24D9  
        9434 24DA  
        9435 24DB  
        9436 24DC  
        9437 24DD  
        9438 24DE  
        9439 24DF  
        9440 24E0  
        9441 24E1  
        9442 24E2  
        9443 24E3  
        9444 24E4  
        9445 24E5  
        9446 24E6  
        9447 24E7  
        9448 24E8  
        9449 24E9  
        9450 24EA  
        9451 24EB  
        9452 24EC  
        9453 24ЭД  
        9454 24EE  
        9455 24EF  
        9456 24F0  
        9457 24F1  
        9458 24F2  
        9459 24F3  
        9460 24F4  
        9461 24F5  
        9462 24F6  
        9463 24F7  
        9464 24F8  
        9465 24F9  
        9466 24FA  
        9467 24FB  
        9468 24FC  
        9469 24FD  
        9470 24FE  
        9471 24FF  
        9472 2500  
        9473 2501  
        9474 2502  
        9475 2503  
        9476 2504  
        9477 2505  
        9478 2506  
        9479 2507  
        9480 2508  
        9481 2509  
        9482 250A  
        9483 250B  
        9484 250C  
        9485 250D  
        9486 250E  
        9487 250F  
        9488 2510  
        9489 2511  
        9490 2512  
        9491 2513  
        9492 2514  
        9493 2515  
        9494 2516  
        9495 2517  
        9496 2518  
        9497 2519  
        9498 251A  
        9499 251B  
        9500 251C  
        9501 251D  
        9502 251E  
        9503 251F  
        9504 2520  
        9505 2521  
        9506 2522  
        9507 2523  
        9508 2524  
        9509 2525  
        9510 2526  
        9511 2527  
        9512 2528  
        9513 2529  
        9514 252A  
        9515 252B  
        9516 252C  
        9517 252D  
        9518 252E  
        9519 252F  
        9520 2530  
        9521 2531  
        9522 2532  
        9523 2533  
        9524 2534  
        9525 2535  
        9526 2536  
        9527 2537  
        9528 2538  
        9529 2539  
        9530 253A  
        9531 253B  
        9532 253C  
        9533 253D  
        9534 253E  
        9535 253F  
        9536 2540  
        9537 2541  
        9538 2542  
        9539 2543  
        9540 2544  
        9541 2545  
        9542 2546  
        9543 2547  
        9544 2548  
        9545 2549  
        9546 254A  
        9547 254B  
        9548 254C  
        9549 254D  
        9550 254E  
        9551 254F  
        9552 2550  
        9553 2551  
        9554 2552  
        9555 2553  
        9556 2554  
        9557 2555  
        9558 2556  
        9559 2557  
        9560 2558  
        9561 2559  
        9562 255A  
        9563 255B  
        9564 255C  
        9565 255D  
        9566 255E  
        9567 255F  
        9568 2560  
        9569 2561  
        9570 2562  
        9571 2563  
        9572 2564  
        9573 2565  
        9574 2566  
        9575 2567  
        9576 2568  
        9577 2569  
        9578 256A  
        9579 256B  
        9580 256C  
        9581 256D  
        9582 256E  
        9583 256F  
        9584 2570  
        9585 2571  
        9586 2572  
        9587 2573  
        9588 2574  
        9589 2575  
        9590 2576  
        9591 2577  
        9592 2578  
        9593 2579  
        9594 257A  
        9595 257B  
        9596 257C  
        9597 257D  
        9598 257E  
        9599 257F  
        9600 2580  
        9601 2581  
        9602 2582  
        9603 2583  
        9604 2584  
        9605 2585  
        9606 2586  
        9607 2587  
        9608 2588  
        9609 2589  
        9610 258A  
        9611 258B  
        9612 258C  
        9613 258D  
        9614 258E  
        9615 258F  
        9616 2590  
        9617 2591  
        9618 2592  
        9619 2593  
        9620 2594  
        9621 2595  
        9622 2596  
        9623 2597  
        9624 2598  
        9625 2599  
        9626 259A  
        9627 259B  
        9628 259C  
        9629 259D  
        9630 259E  
        9631 259F  
        9632 25A0  
        9633 25A1  
        9634 25A2  
        9635 25A3  
        9636 25A4  
        9637 25A5  
        9638 25A6  
        9639 25A7  
        9640 25A8  
        9641 25A9  
        9728 2600  
        9729 2601  
        9730 2602  
        9731 2603  
        9732 2604  
        9733 2605  
        9734 2606  
        9742 260E  
        9743 260F  
        9754 261A  
        9755 261B  
        9756 261C  
        9757 261D  
        9758 261E  
        9759 261F  
        9762 2622  
        9763 2623  
        9764 2624  
        9765 2625  
        9766 2626  
        9767 2627  
        9768 2628  
        9769 2629  
        9770 262A  
        9771 262B  
        9772 262C  
        9773 262D  
        9774 262E  
        9775 262F  
        9785 2639  
        9786 263A  
        9787 263B  
        9788 263C  
        9789 263D  
        9790 263E  
        9791 263F  
        9792 2640  
        9793 2641  
        9794 2642  
        9795 2643  
        9796 2644  
        9797 2645  
        9798 2646  
        9799 2647  
        9800 2648  
        9801 2649  
        9802 264A  
        9803 264Б  
        9804 264C  
        9805 264D  
        9806 264E  
        9807 264F  
        9808 2650  
        9809 2651  
        9810 2652  
        9811 2653  
        9812 2654  
        9813 2655  
        9814 2656  
        9815 2657  
        9816 2658  
        9817 2659  
        9818 265A  
        9819 265B  
        9820 265C  
        9821 265D  
        9822 265E  
        9823 265F  
        9824 2660  
        9825 2661  
        9826 2662  
        9827 2663  
        9828 2664  
        9829 2665  
        9830 2666  
        9831 2667  
        9832 2668  
        9833 2669  
        9834 266A  
        9835 266B  
        9836 266C  
        9837 266D  
        9838 266E  
        9839 266F  
        9840 2670  
        9841 2671  
        9842 2672  
        9843 2673  
        9844 2674  
        9845 2675  
        9846 2676  
        9847 2677  
        9848 2678  
        9849 2679  
        9850 267A  
        9851 267B  
        9852 267C  
        9853 267D  
        9854 267E  
        9855 267F  
        9889 26A1  
        9890 26A2  
        9891 26A3  
        9892 26A4  
        9893 26A5  
        9894 26A6  
        9895 26A7  
        9896 26A8  
        9901 26AD  
        9902 26AE  
        9903 26AF  
        9917 26BD  
        9918 26BE  
        9924 26C4  
        9925 26C5  
        9940 26D4  
        9998 270E  
        10003 2713  
        10004 2714  
        10005 2715  
        10024 2728  
        10026 272A  
        10027 272B  
        10029 272D  
        10030 272E  
        10031 272F  
        10032 2730  
        10033 2731  
        10034 2732  
        10035 2733  
        10036 2734  
        10037 2735  
        10038 2736  
        10039 2737  
        10043 273B  
        10048 2740  
        10049 2741  
        10050 2742  
        10051 2743  
        10052 2744  
        10053 2745  
        10054 2746  
        10055 2747  
        10056 2748  
        10057 2749  
        10058 274A  
        10059 274B  
        10060 274C  
        10061 274D  
        10062 274E  
        10063 274F  
        10064 2750  
        10065 2751  
        10066 2752  
        10084 2764  
        10102 2776  
        10103 2777  
        10104 2778  
        10105 2779  
        10106 277A  
        10107 277B  
        10108 277C  
        10109 277D  
        10110 277E  
        10111 277F  
        10112 2780  
        10113 2781  
        10114 2782  
        10115 2783  
        10116 2784  
        10117 2785  
        10118 2786  
        10119 2787  
        10120 2788  
        10121 2789  
        10122 278А  
        10123 278B  
        10124 278C  
        10125 278D  
        10126 278E  
        10127 278F  
        10128 2790  
        10129 2791  
        10130 2792  
        10131 2793  
        10132 2794  
        11093 2B55  

        Выбор и применение кодировки символов

        Выбор и применение кодировки символов

        Вопрос

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

        Содержимое состоит из последовательности символов. Символы представляют собой буквы алфавита, знаки препинания и т. д. Но содержимое хранится в компьютере в виде последовательности байтов, представляющих собой числовые значения. Иногда для представления одного символа используется более одного байта. Подобно кодам, используемым в шпионаже, способ преобразования последовательности байтов в символы зависит от того, какой ключ использовался для кодирования текста. В связи с этим 9Ключ 0008 называется кодировкой символов .

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

        Если вам нужно лучше понять, что такое символы и кодировки символов, см. статью Кодировки символов для начинающих .

        Быстрый ответ

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

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

        Проверьте, не повлияют ли на ваш выбор настройки HTTP-сервера.

        В дополнение к объявлению кодировки документа внутри документа и/или на сервере вам необходимо сохранить текст в этой кодировке, чтобы применить ее к вашему контенту.

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

        Детали

        Применение кодировки к содержимому

        Авторы контента должны объявить кодировку символов своих страниц, используя один из методов, описанных в Объявление кодировок символов в HTML .

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

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

        Для получения информации о «Форме нормализации Unicode» см. Нормализация в HTML и CSS . Сведения о «подписи Unicode (BOM)» см. в статье Знак порядка байтов (BOM) в HTML .

        Вам также может потребоваться убедиться, что ваш сервер обслуживает документы с правильными объявлениями HTTP, поскольку в противном случае он переопределит информацию в документе (см. ниже).

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

        Зачем использовать кодировку UTF-8?

        HTML-страница может быть только в одной кодировке. Вы не можете кодировать разные части документа в разных кодировках.

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

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

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

        В наши дни любые барьеры для использования Unicode очень низки. Фактически, в январе 2012 года Google сообщил, что более 60% Интернета в их выборке из нескольких миллиардов страниц теперь используют UTF-8. Добавьте к этому цифру для веб-страниц, состоящих только из ASCII (поскольку ASCII является подмножеством UTF-8), и эта цифра возрастет примерно до 80%.

        Существует три различных кодировки символов Unicode: UTF-8, UTF-16 и UTF-32. Из этих трех для веб-контента следует использовать только кодировку UTF-8. Спецификация HTML5 гласит: «Авторам рекомендуется использовать UTF-8. Средства проверки соответствия могут посоветовать авторам не использовать устаревшие кодировки. Инструменты разработки должны по умолчанию использовать UTF-8 для вновь созданных документов».

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

        Принимая во внимание заголовок HTTP

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

        Возможно, у вас нет контроля над объявлениями, которые идут с заголовком HTTP, и вам, возможно, придется обратиться за помощью к людям, управляющим сервером. С другой стороны, иногда есть способы исправить проблемы на сервере, если у вас ограниченный доступ к файлам настройки сервера или вы создаете страницы с помощью языков сценариев. Например, см. 1069.77 Установка параметра набора символов HTTP для получения дополнительной информации о том, как изменить информацию о кодировке либо локально для набора файлов на сервере, либо для содержимого, созданного с использованием языка сценариев.

        Обычно перед этим необходимо проверить, действительно ли заголовок HTTP объявляет кодировку символов. Вы можете использовать средство проверки интернационализации W3C, чтобы узнать, какая кодировка символов, если таковая имеется, указана в заголовке HTTP. В качестве альтернативы статье Проверка заголовков HTTP указывает на некоторые другие инструменты для проверки информации о кодировке, передаваемой сервером.

        Дополнительная информация

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

        Что делать, если я не могу использовать кодировку UTF-8?

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

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

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

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

        Избегайте этих кодировок

        Спецификация HTML5 указывает на ряд кодировок, которых следует избегать.

        Документы не должны использовать JIS_C6226-1983 , JIS_X0212-1990 , HZ-GB-2312 , JOHAB (кодовая страница Windows 1361), кодировки на основе ISO-2022 или кодировки на основе EBCDIC . Это связано с тем, что они позволяют кодовым точкам ASCII представлять символы, отличные от ASCII, что представляет угрозу безопасности.

        Документы также не должны использовать кодировки CESU-8 , UTF-7 , BOCU-1 или SCSU , поскольку они никогда не предназначались для веб-контента, а спецификация HTML5 запрещает браузерам распознавать их.

        Спецификация также настоятельно не рекомендует использовать UTF-16 , а использование UTF-32 «особенно не рекомендуется».

        Также следует избегать других кодировок символов, перечисленных в спецификации Encoding . К ним относятся кодировки Big5 и EUC-JP , которые имеют проблемы с совместимостью. ISO-8859-8 (кодировка на иврите для визуально упорядоченного текста) также следует избегать в пользу кодировки, которая работает с логически упорядоченным текстом (т. е. UTF-8, в противном случае ISO-8859-8-и).

        Кодировка , заменяющая , указанная в спецификации Encoding , на самом деле не является кодировкой; это запасной вариант, который сопоставляет каждый октет с кодовой точкой Unicode U+FFFD REPLACEMENT CHARACTER. Очевидно, что передавать данные в такой кодировке бесполезно.

        Кодировка x-user-defined представляет собой однобайтовую кодировку, младшая половина которой представляет собой ASCII, а верхняя половина отображается в области частного использования Unicode (PUA). Как и в случае с PUA в целом, лучше избегать использования этой кодировки в общедоступном Интернете, поскольку она наносит ущерб функциональной совместимости и долгосрочному использованию.

        Дальнейшее чтение

        • Начать? Знакомство с наборами символов и кодировками

        • Учебное пособие, Обработка кодировок символов в HTML и CSS

        • Ссылки по теме, Создание HTML и CSS

          • символов
          • Выбор кодировки символов
          • Изменение кодировки документа
          • Проверка кодировки документа

        Таблица ASCII/ISO 8859 (Latin-1)

        9?
        Объекты US-ASCII
        Управляющие символы
        Символ
        Ссылка
        Шестигранник Символ Имя объекта Описание
        00 9_   разделитель блоков США
        Специальные символы и цифры
        Символ
        Ссылка
        Шестигранник Символ Имя объекта Описание
        20   &sp; пробел
        ! 21 ! ! восклицательный знак
        " 22 » " двойные кавычки
        # 23 # # знак номера, фунт
        $ 24 $ $ знак доллара
        % 25 % % знак процента
        & 26 и &ампер; амперсанд
        ' 27 апостроф, одинарная кавычка  
        ( 28 ( (пар; левая скобка  
        ) 29 ) ) правая скобка
        * * * звездочка  
        + + + плюс  
        , , &запятая; запятая  
        - &минус; &дефис; минус, дефис  
        . . . точка, десятичная точка, точка  
        / / / косая черта, косая черта, солид  
        0 30 0   цифра 0  
        1 31 1   цифра 1  
        2 32 2   цифра 2  
        3 33 3   цифра 3  
        4 34 4   цифра 4  
        5 35 5   цифра 5  
        6 36 6   цифра 6  
        7 37 7   цифра 7  
        8 38 8   цифра 8  
        9 39 9   цифра 9  
        : : &двоеточие; двоеточие  
        ; ; ; точка с запятой  
        < < < знак меньше  
        = 3D = = знак равенства  
        > > > знак «больше»  
        ? 3F ? ? знак вопроса  
        Заглавные буквы
        Символ
        Ссылка
        Шестигранник Символ Имя объекта Описание
        @ 40 @ @ реклама на вывеске  
        A 41 А   заглавная А  
        B 42 Б   заглавная Б  
        C 43 С   заглавная С  
        D 44 Д   заглавная Д  
        E 45 Е   заглавная Е  
        F 46 Ф   заглавная Ф  
        G 47 Г   заглавная буква G  
        H 48 Х   заглавная Н  
        I 49 я   заглавная я  
        J Дж   заглавная J  
        K К   заглавная К  
        L л   заглавная Л  
        M М   заглавная М  
        N Н   столица N  
        O О   заглавная О  
        P 50 Р   заглавная Р  
        Q 51 Q   заглавная Q  
        R 52 Р   капитал Р  
        S 53 С   заглавная S  
        T 54 Т   заглавная Т  
        U 55 У   заглавная У  
        V 56 В   заглавная буква В  
        W 57 Вт   заглавная буква W  
        X 58 Х   заглавная х  
        Y 59 Д   заглавная буква Y  
        Z З   заглавная Z  
        [ [ [lqb; левая квадратная скобка  
        &#09 ˆ распорка циркумфлекс акцент  
        _ _ &нижняя штанга; ― пробел подчеркивание, нижняя строка, горизонтальная черта  
        Строчные буквы
        Символ
        Ссылка
        Шестигранник Символ Имя объекта Описание
        ` 60 ` &грав; пробел передний знак, задний апостроф  
        a 61 и   маленький а  
        b 62 б   маленький б  
        c 63 с   маленький c  
        d 64 д   маленький д  
        e 65 и   маленький e  
        f 66 ф   маленькая ф  
        g 67 г   маленький г  
        h 68 ч   маленькая высота  
        i 69 и   маленький я  
        j и   маленький j  
        k к   маленький к  
        l л   маленький л  
        m м   маленький м  
        n п   маленький номер  
        o или   маленький или  
        p 70 р   маленький стр  
        q 71 д   маленький q  
        r 72 р   маленький р  
        s 73 с   маленький с  
        t 74 т   малый т  
        u 75 и   маленький у  
        v 76 против   маленький v  
        w 77 с   маленький ш  
        x 78 х   маленький x  
        y 79 и   маленький у  
        z г   малый z  
        { { { левая фигурная скобка, левая фигурная скобка  
        | | &verb; вертикальная перекладина  
        } } } правая фигурная скобка, правая фигурная скобка  
        ~ ~ &тильда; тильда акцент     удалить ДЕЛ
        Расширенные управляющие символы
        Символ
        Ссылка
        Шестигранник Символ Имя объекта Описание
        80        
        81        
        82        
        ƒ 83        
        84        
        85        
        86        
        87        
        ˆ 88        
        89        
        Š        
               
        Œ        
               
        Ž        
               
        90        
        91        
        92        
        93        
        94        
        95        
        96        
        97        
        ˜ 98        
        99        
        š        
               
        œ        
               
        ž        
        Ÿ        
        ISO 8859-1 (Latin-1) Объекты
        Специальные символы
        Символ
        Ссылка
        Шестигранник Символ Имя объекта Описание
          А0     неразрывный пробел  
        ¡ А1 ¡ !искл. перевернутый восклицательный знак  
        ¢ А2 ¢ % знак цента  
        £ А3 £ фунт; знак фунта стерлингов  
        ¤ А4 ¤ &текущий; общий знак валюты  
        ¥ А5 ¥ иен; иена знак  
        ¦ А6 ¦ &brkbar; ¦ сломанная вертикальная планка  
        § А7 § &сек; Знак раздела  
        ¨ А8 ¨ ¨ &умереть; интервал диереза ​​или умляут  
        © А9 © &копия; знак авторского права  
        ª АА ª ª женский порядковый знак  
        « АБ « « двойная кавычка слева или кайма  
        ¬ АС ¬ &нет; логический не знак  
        ­ н. э. ­ мягкий дефис  
        ® АЕ ® ® зарегистрированный товарный знак  
        ¯ АФ ¯ ¯ &hibar; интервал макрон длинный акцент  
        ° В0 ° &град; знак градуса  
        ± В1 ± ± знак плюс-минус  
        ² В2 ² &up2; верхний индекс 2  
        ³ В3 ³ &up3; верхний индекс 3  
        ´ В4 ´ ´ пробел акцент  
        µ В5 µ &микро; микрознак, мю  
        В6 &пара; знак абзаца, знак подставки  
        · В7 · · средняя точка, центральная точка  
        ¸ В8 ¸ ¸ проставка седилья  
        ¹ В9 ¹ верхний индекс 1  
        º ВА º º мужской порядковый номер  
        » ВВ » »; Прямоугольная двойная кавычка или кайма  
        ¼ до н. э. = ¼ дробь 1/4  
        ½ БД ½ ½ &половина; дробь 1/2  
        ¾ БЭ ¾ ¾ дробь 3/4  
        ¿ БФ À ¿ перевернутый вопросительный знак  
        Прописные буквы Latin-1
        Символ
        Ссылка
        Шестигранник Символ Имя объекта Описание
        À С0 А À столица могила  
        Á С1 Á &Острый; заглавная А острая  
        Â С2 Â &Цирк. заглавная А циркумфлекс  
        Ã С3 Ã &Атильда; заглавная буква А тильда  
        Ä С4 Ä Ä заглавная буква Диерес или умляут  
        Å С5 Å &Аринг; капитальное кольцо  
        Æ С6 Æ Æ заглавная лигатура AE  
        Ç С7 Ç Ç Седилья с большой буквы  
        È С8 È &Выгравировать; заглавная Е могила  
        É С9 Э É заглавная Е острый  
        Ê СА К Ê заглавная буква E циркумфлекс  
        Ë КБ Ë Ë заглавная буква Е диерезис или умляут  
        Ì СС М &Изображение; столица I могила  
        Í CD Í Í заглавная I острая  
        Î СЕ О Î капитель I циркумфлекс  
        Ï КФ Р Ï заглавная буква I диереза ​​или умляут  
        Ð Д0 Р Ð капитал ETH  
        Ñ Д1 С &Nтильда; заглавная буква N тильда  
        Ò Д2 Т &Огрейв; заглавная буква O могила  
        Ó Д3 О Ó заглавная О острый  
        Ô Д4 Ô Ô капитель O циркумфлекс  
        Õ Д5 Х &Отильда; заглавная О тильда  
        Ö Д6 О Ö заглавная О диереза ​​или умляут  
        × Д7 × × знак умножения  
        Ø Д8 Ø &Ослэш; заглавная косая черта  
        Ù Д9 Ù Ù; капитель У могила  
        Ú ДА Ú Ú заглавная U острая  
        Û ДБ Û Û капитель U циркумфлекс  
        Ü DC О Ü заглавная буква U диерезис или умляут  
        Ý ДД Ý Ý заглавная Y острый  
        Þ ДЭ Þ &ШИП; заглавная ШИП  
        ß ДФ ß ß малая острая лигатура s, sz  
        Строчные буквы Latin-1
        Символ
        Ссылка
        Шестигранник Символ Имя объекта Описание
        à Э0 и &грав; небольшая могила  
        á Е1 а á маленький острый  
        â Е2 &acir; маленький циркумфлекс  
        ã Е3 ã &далее; маленькая тильда  
        ä Е4 по ä маленький диерез или умляут  
        å Е5 х å кольцо маленькое  
        æ Е6 æ æ малая лигатура ae  
        ç Е7 и ç маленькая седилья c  
        è Е8 и &грав; маленькая могила  
        é Е9 и é маленький и острый  
        ê ЕА и ê маленький e циркумфлекс  
        ë ЭБ ë маленький e диерез или умлаут  
        ì ЕС х ` маленький и могильный  
        í ЭД и í маленький и острый  
        î ЕЕ и î маленький и циркумфлекс  
        ï ЭФ ï ï маленький я диерез или умляут  
        ð Ф0 ð &эт; малый эт  
        ñ Ф1 ñ маленькая н тильда  
        ò Ф2 ò ò небольшая могила  
        ó Ф3 ó маленький или острый  
        ô Ф4 х ô маленький или циркумфлекс  
        õ Ф5 х õ маленькая или тильда  
        ö Ф6 или ¨ маленький о диерез или умлаут  
        ÷ Ф7 ÷ &делить; знак деления  
        ø Ф8 ø &ослеш; маленькая косая черта  
        ù Ф9 х ù маленькая могила  
        ú ФА ú ú маленький и острый  
        û ФБ û û малый U циркумфлекс  
        ü ФК ü ü маленький у диерез или умляут  
        ý ФД х ý маленький и острый  
        þ ФЭ + &шип; маленький шип  
        ÿ ФФ ÿ ÿ маленький у диереза ​​или умляут  

        Кодировка символов сейчас

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

        ASCII и UTF-8 — две современные системы кодирования текста. Оба объясняются в этом видео с участием Кейтлин Мерри.

        Просмотреть расшифровку

        2.3

        В 1963 году был принят Американский стандартный код для обмена информацией или ASCII, чтобы информацию можно было переводить между компьютерами. Он был разработан для создания международного стандарта кодирования латинского алфавита; превращая двоичные числа в текст на экране вашего компьютера. ASCII кодирует символы в семь битов двоичных данных. Поскольку каждый бит может быть либо 1, либо 0, всего получается 128 возможных комбинаций. Каждое из этих двоичных чисел можно преобразовать в десятичное число от 0 до 127. Например,

      1] Но что, если мы используем 8-битные байты? Мы просто ставим 0 перед двоичным числом. Итак, в 8-битном режиме привет выглядит так. Давайте посмотрим на все это на практике. На вашем компьютере откройте текстовый редактор Блокнот. Введите сообщение «Данные прекрасны» и сохраните его.

      109.1

      Посмотрите на размер файла. 18 байт. Теперь добавьте еще одно слово: Дейта такая красивая. Вы добавили три новых символа S, O и пробел. Если вы еще раз посмотрите на размер файла, то увидите, что он увеличился на 3 байта. Таким образом, ASCII использует 7 бит для представления 128 символов. Но когда были разработаны 8-битные компьютеры, дополнительная цифра означала, что теперь можно было закодировать 256 символов. Проблемы возникли, когда страны начали непоследовательно использовать эти дополнительные символы. Таким образом, разные числа представляли разные символы в разных языках. Япония создала несколько систем кодирования своего языка, которые различаются в зависимости от аппаратного обеспечения. Сообщения, отправляемые с одного японского компьютера на другой, становились искаженными и нечитаемыми, когда компьютер неправильно переводил данные.

      161

      Ошибки в преобразовании японских иероглифов стали такой проблемой, что у них даже есть название для этого, моджибаке. Эта проблема стала намного хуже с изобретением всемирной паутины. Для решения проблем, связанных с отправкой документов на разных языках по всему миру, был создан консорциум для создания всемирного стандарта Unicode. Как и в ASCII, в Unicode каждому символу присваивается определенный номер. Unicode также использует старую кодировку ASCII для английского языка. Таким образом, A в верхнем регистре по-прежнему равен 65. Но Unicode кодирует гораздо больше, чем 100 000 символов в большинстве языков. Для этого он использует не 8 бит данных, а 32. Но 65, закодированные в 32 бита, выглядят так, что занимает много места.

      211.5

      Кроме того, многие старые компьютеры интерпретируют восемь нулей подряд как конец строки символов, также называемой нулем. Это означает, что они не будут отправлять никаких символов, которые появятся позже. Метод кодирования Unicode, UTF8, решает эти проблемы. Вплоть до числа 127 значение ASCII остается неизменным. Так что A по-прежнему 0

      64 32 16 8 4 2 1
      1 0 0 0 0 0 1

      Вот как «HELLO» закодировано в ASCII в двоичном виде:

      0 1 0 0
      Латинский символ ASCII-код
      Н
      Е
      Л
      Л
      О 1

      Применим эту теорию на практике:

      1. Открыть Блокнот или любой другой обычный текстовый редактор
      2. Введите сообщение и сохраните его, например. «данные прекрасны»
      3. Посмотрите на размер файла — у меня 18 байт
      4. Теперь добавьте еще одно слово, например. «данные такие красивые»
      5. Если вы еще раз посмотрите на размер файла, то увидите, что он изменился — теперь мой файл стал на 3 байта больше (SO[SPACE]: «S», «O» и пробел)

      Unicode и UTF-8

      Поскольку символы ASCII кодируются 7 битами, переход на 8-битную вычислительную технологию означал использование одного дополнительного бита. С этой дополнительной цифрой Extended ASCII кодирует до 256 символов. Однако возникшая проблема заключалась в том, что страны, использующие разные языки, по-разному использовали эту дополнительную возможность кодирования. Многие страны добавили свои собственные дополнительные символы, и разные числа представляли разные символы на разных языках. Япония даже создала несколько систем кодирования японского языка в зависимости от аппаратного обеспечения, и все эти методы были несовместимы друг с другом. Таким образом, когда сообщение было отправлено с одного компьютера на другой, полученное сообщение могло стать искаженным и нечитаемым; японские системы кодирования символов были настолько сложны, что даже когда сообщение было отправлено с одного типа японского компьютера на другой, происходило нечто, называемое «модзибаке»:

      Проблема несовместимых систем кодирования стала более актуальной с изобретением Всемирной паутины, поскольку люди обменивались цифровыми документами по всему миру, используя несколько языков. Чтобы решить эту проблему, Консорциум Unicode создал универсальную систему кодирования под названием Unicode . Юникод кодирует более 100 000 символов, охватывая все символы, которые вы найдете в большинстве языков. Unicode присваивает каждому символу определенное число, а не двоичную цифру. Но были некоторые проблемы с этим, например:

      1. Для кодирования 100 000 символов потребуется около 32 двоичных разрядов. Unicode использует ASCII для английского языка, поэтому A по-прежнему равно 65. Однако при 32-битной кодировке буква A будет двоичным представлением 000000000000000000000000000000000000
    9

    Глиф

    Код

    Глиф

    Код

    Символы валюты

    £

    ALT+0163

    ¥

    ALT+0165

    ¢

    ALT+0162

    $

    0024+ALT+Х

    ALT+0128

    ¤

    ALT+0164

    Юридические символы

    ©

    ALT+0169

    ®

    ALT+0174

    §

    ALT+0167

    ALT+0153

    Математические символы

    °

    ALT+0176

    º

    ALT+0186

    221А+ALT+Х

    +

    ALT+43

    #

    ALT+35

    мкм

    ALT+0181

    <

    ALT+60

    >

    ALT+62

    %

    ALT+37

    (

    ALT+40

    [

    ALT+91

    )

    ALT+41

    ]

    ALT+93

    2206+ALT+Х

    Дроби

    =

    ALT+0188

    ½

    ALT+0189

    ¾

    ALT+0190

    Знаки пунктуации и диалектики

    ?

    ALT+63

    À

    ALT+0191

    !

    ALT+33

    203+ALT+X

    ALT+45

    ALT+39

    »

    ALT+34

    ,

    ALT+44

    .

    ALT+46

    |

    ALT+124

    /

    ALT+47

    ALT+94

    «

    ALT+0171

    »

    ALT+0187

    «

    ALT+174

    »

    ALT+175

    ~

    ALT+126

    и

    ALT+38

    :

    ALT+58

    {

    ALT+123

    ;

    ALT+59

    }

    ALT+125

    Символы формы

    25A1+ALT+X

    221А+ALT+Х

    Верх страницы

    Общие коды диакритических символов

    Полный список глифов и их кодов символов см. в Карте символов.

    Глиф

    Код

    Глиф

    Код

    Ã

    ALT+0195

    х

    ALT+0229

    Å

    ALT+143

    х

    ALT+134

    Ä

    ALT+142

    и

    ALT+132

    À

    ALT+0192

    и

    ALT+133

    Á

    ALT+0193

    а

    ALT+160

    Â

    ALT+0194

    ALT+131

    Ç

    ALT+128

    и

    ALT+135

    Ч

    010C+ALT+X

    č

    010D+ALT+X

    Э

    ALT+144

    и

    ALT+130

    È

    ALT+0200

    и

    ALT+138

    К

    ALT+202

    ê

    ALT+136

    Ë

    ALT+203

    ALT+137

    ÷

    0114+ALT+X

    0115+ALT+X

    011E+ALT+X

    011F+ALT+X

    0122+ALT+Х

    0123+ALT+X

    О

    ALT+0207

    ï

    ALT+139

    О

    ALT+0206

    î

    ALT+140

    Í

    ALT+0205

    ALT+161

    М

    ALT+0204

    х

    ALT+141

    С

    ALT+165

    ALT+164

    . ..

    ALT+153

    или

    ALT+148

    Ô

    ALT+212

    х

    ALT+147

    О

    014C+ALT+X

    014D+ALT+X

    Т

    ALT+0210

    х

    ALT+149

    О

    ALT+0211

    ALT+162

    Ø

    ALT+0216

    ø

    00F8+ALT+X

    ×

    015C+ALT+X

    015D+ALT+X

    Ş

    015E+ALT+X

    ş

    015F+ALT+X

    О

    ALT+154

    ü

    ALT+129

    ALT+016A

    016B+ALT+X

    Û

    ALT+0219

    х

    ALT+150

    Ù

    ALT+0217

    х

    ALT+151

    Ú

    00DA+ALT+X

    ú

    ALT+163

    Ÿ

    0159+ALT+X

    ÿ

    ALT+152

    Верх страницы

    Коды символов для символов лигатуры

    Дополнительные сведения о типографских лигатурах см. в разделе Типографские лигатуры. Полный список лигатур и их кодов символов см. в Карте символов.

    Глиф

    Код

    Глиф

    Код

    Æ

    ALT+0198

    æ

    ALT+0230

    ß

    ALT+0223

    ß

    ALT+225

    ALT+0140

    ALT+0156

    ʩ

    02A9+ALT+X

    ʣ

    02A3+ALT+X

    ʥ

    02A5+ALT+X

    ʪ

    02AA+ALT+X

    ʫ

    02AB+ALT+X

    ʦ

    0246+ALT+X

    ʧ

    02A7+ALT+X

    Љ

    0409+ALT+Х

    Ю

    042E+ALT+X

    Њ

    040А+АЛТ+Х

    Ѿ

    047E+ALT+x

    Ы

    042B+ALT+X

    Ѩ

    0468+ALT+Х

    Ѭ

    049C+ALT+X

    FDF2+ALT+X

    Верх страницы

    Непечатаемые управляющие символы ASCII

    Номера таблиц ASCII 0–31 назначаются для управляющих символов, используемых для управления некоторыми периферийными устройствами, такими как принтеры. Например, 12 представляет функцию подачи формы/новой страницы. Эта команда указывает принтеру перейти к началу следующей страницы.

    1069Таблица 94 непечатаемых управляющих символов ASCII

    Десятичный

    Символ

    Десятичный

    Символ

    ноль

    0

    выход из канала передачи данных

    16

    начало товарной позиции

    1

    управление устройством 1

    17

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

    2

    устройство управления 2

    18

    конец текста

    3

    устройство управления 3

    19

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

    4

    управление устройством 4

    20

    запрос

    5

    отрицательное подтверждение

    21

    подтвердить

    6

    синхронный холостой ход

    22

    звонок

    7

    конец блока передачи

    23

    назад

    8

    отменить

    24

    горизонтальная вкладка

    9

    конец среды

    25

    перевод строки/новая строка

    10

    замена

    26

    вертикальная вкладка

    11

    побег

    27

    подача формы/новая страница

    12

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

    28

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

    13

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

    29

    сменить

    14

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

    30

    сдвиг в

    15

    разделитель блоков

    31

    пробел

    32

    ДЕЛ

    127

    Верх страницы

    Дополнительная информация