Содержание

Кодировка текста ASCII (Windows 1251, CP866, KOI8-R) и Юникод (UTF 8, 16, 32) — как исправить проблему с кракозябрами

Обновлено 19 января 2021
  1. ASCII — базовая кодировка текста для латиницы
  2. Расширенные версии Аски — кодировки CP866 и KOI8-R
  3. Windows 1251 — почему вылезают кракозябры
  4. Юникод (Unicode) — универсальные кодировки UTF 8, 16 и 32
  5. Кракозябры вместо русских букв — как исправить

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

UTF 8 без BOM. А что такое приставка BOM?

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

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

обезопасите себя от вылезания кракозябров.

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

Поэтому ни в коем случае не пользуйтесь обычным блокнотом Windows

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

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

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

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

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

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

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

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

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

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

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

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

Удачи вам! До скорых встреч на страницах блога KtoNaNovenkogo.ru

ASCII – путеводитель для новичков

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

ASCII представляет собой кодировочную таблицу печатных символов (см. скриншот №1), набираемых на компьютерной клавиатуре, для передачи информации и некоторых кодов. Иными словами происходит кодирование алфавита и десятичных цифр в соответствующие символы, представляющие и несущие в себе необходимую информацию.

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

Для решения подобных вопросов были разработаны другие версии таблицы ASCII. Например, для языков с иноязычной структурой были или убраны буквы английского алфавита, или к ним добавлялись дополнительные символы в виде национального алфавита. Так, в кодировке ASCII могут присутствовать русские буквы для национального использования (см. скриншот №2).

Данная кодировочная система необходима не только для набора текстовой информации на клавиатуре. Она также используется в графике. Например, в программе ASCII Art Maker графические изображения различных расширений состоят из спектра символов кодировки ASCII (см. скриншот №3).

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

Данный метод кодировки также может быть востребован во время написания или создания документа HTML. Например, вы вводите определённый и необходимый вам набор знаков, а при просмотре самой страницы на экран будет выведен символ, соответствующий данному коду.

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

  1. Переносимый набор символов;
  2. Управляющие символы;
  3. EBCDIC;
  4. VISCII;
  5. YUSCII;
  6. Юникод;
  7. ASCII art;
  8. КОИ-8.

Как и любая систематизированная программа, ASCII обладает своими характерными свойствами. Так, например, десятеричная система исчисления (цифры от 0 до 9) преобразуется в двоичную систему исчисления (т.е. каждая десятеричная цифра преобразуется в двоичную 288=1001000 соответственно).

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

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

Применение ASCII в программах Microsoft Office:

В случае необходимости данный вариант кодирования информации может быть использован в Microsoft Notepad и Microsoft Office Word. В рамках этих приложений документ может быть сохранен в формате ASCII, но в этом случае при наборе текста невозможно будет использование некоторых функций.

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

  • Microsoft Excel;
  • Microsoft FrontPage;
  • Microsoft InfoPath;
  • Microsoft OneNote;
  • Microsoft Outlook;
  • Microsoft PowerPoint;
  • Microsoft Project.

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

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

До новых встреч!

Кодировки русского текста | Практическая информатика

Исторически сложилось так, что для представления печатных символов (кодирования текста) в первых ЭВМ отвели 7 бит. 2

7=128. Этого количества вполне хватало для кодирования всех строчных и прописных букв латинского алфавита, десяти цифр и различных знаков и скобок. Именно такой, 7-битной, является таблица символов ASCII (американский стандартный код для обмена информацией), подробную информацию о которой вы можете получить при помощи команды man ascii операционной системы Linux.

Когда возникла необходимость кодировать национальные алфавиты, то 128 символов стало недостаточно. Было решено перейти на кодирование с помощью 8 бит (т. е. одного байта). В результате количество символов, которые можно закодировать таким образом стало равно 2

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

Среди них была и одна из первых таблиц для кодировки русских букв — ISO 8859-5 (воспользуйтесь командой man iso_8859_1 для получения кодов русских букв в этой таблице).

Задачи передачи текстовой информации по сети вынудили разработать еще одну кодировку для русских букв, названную Koi8-R (код отображения информации 8-битный, русифицированный). Рассмотрим ситуацию, когда письмо, содержащее русский текст, отправлено по электронной почте. Случалось, что в процессе путешествия по сетям письмо обрабатывалось программой, которая работала с 7-битной кодировкой и обнуляла восьмой бит. В результате такого преобразования код символа уменьшался на 128, превращаясь в код символа латинского алфавита. Возникла необходимость повысить устойчивость передаваемой текстовой информации к обнулению 8 бита.

К счастью, значительное число букв кириллицы имеет фонетические аналоги в латинском алфавите. Например, Ф и F, Р и R. Есть несколько букв, совпадающих даже по начертанию. Расположив русские буквы в кодовой таблице таким образом, чтобы их код превышал код аналогичных латинских на число 128, добились того, что потеря 8-го бита превращала текст хотя и в состоящий из одной латиницы, но все равно понимаемый русскоязычным пользователем.

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

Далее наступила эра персональных компьютеров и операционной системы MS DOS. Как выяснилось, кодировка Koi8-R для нее не подходила (так же, как и ISO 8859-5), в ее таблице некоторые русские буквы находились на тех местах, которые многие программы предполагали заполненными псевдографикой (горизонтальные и вертикальные черточки, уголки и т. д.). Поэтому была придумана еще одна кодировка кириллицы, в таблице которой русские буквы «обтекали» со всех сторон графические символы. Назвали эту кодировку

альтернативной (alt), поскольку она была альтернативой официальному стандарту — кодировке ISO-8859-5. Неоспоримым достоинством этой кодировки является то, что русские буквы в ней расположены в алфавитном порядке.

После появления ОС Windows от фирмы Microsoft выяснилось, что альтернативная кодировка по некоторым причинам для нее не подходит. Снова передвинув русские буквы в таблице (появилась возможность — ведь псевдографика в Windows не требуется), получили кодировку

Windows 1251 (Win-1251).

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

Итак, в различных ОС предпочтение отдается разным кодировкам. Для того чтобы стало возможным чтение и редактирования текста, набранного в другой кодировке, используются программы перекодирования русского текста. Некоторые текстовые редакторы содержат встроенные перекодировщики, позволяющие читать текст в различных кодировках (Word и др.). Мы для перекодировки файлов будем использовать ряд утилит в ОС Linux, назначение которых ясно из названия: alt2koi, win2koi, koi2win, alt2win, win2alt, koi2alt (откуда, куда, цифра 2 (two) схожа по звучанию с предлогом to, указывающим направление). Эти команды имеют одинаковый синтаксис: команда <входной_файл >выходной_файл.


Пример

Перекодируем текст, набранный в редакторе Edit в среде MS DOS, в кодировку Koi8-R. Для этого выполним команду

alt2koi file1.txt > filenew

Так как в MS DOS и Linux по разному кодируется перевод строки, рекомендуется выполнить еще команду «fromdos»:

fromdos filenew > file2.txt 

Команда с обратным действием называется «todos» и имеет такой же синтаксис.


Пример

Отсортируем файл List.txt, содержащий список фамилий и подготовленный в кодировке Koi8-R, в алфавитном порядке. Воспользуемся командой sort, которая сортирует текстовый файл по возрастанию или убыванию кодов символов. Если применить ее сразу, то, например, буква В окажется в конце списка, аналогично соответствующей ей букве латинского алфавита V. Вспомнив, что в альтернативной кодировке русские буквы расположены строго по алфавиту, выполним ряд операций: перекодируем текст в альтернативную кодировку, отсортируем его и снова вернем в кодировку Koi8-R. С использованием конвейера команд получаем

koi2alt List.txt | sort | alt2koi > List_Sort.txt

В современных дистрибутивах ОС Linux решены многие проблемы, связанные с локализацией программного обеспечения. В частности утилита sort теперь учитывает особенности кодировки Koi8-R и для сортировки файла в алфавитном порядке достаточно выполнить команду

sort List.txt > List_Sort.txt

Как работают кодировки текста. Откуда появляются «кракозябры». Принципы кодирования. Обобщение и детальный разбор

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

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

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

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

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

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

8

=256).

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

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

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

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

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

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

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

Итак, закодируем строку «ok» (англ.) в кодировке ASCII. Символ «o» (англ.) имеет позицию 111 в десятичном виде и

6F

в шестнадцатиричном. Переведем это в двоичную систему —

01101111

. Символ «k» (англ.) — позиция 107 в десятеричной и

6B

в шестнадцатиричной, переводим в двоичную —

01101011

. Итого строка «ok» закодированная в ASCII будет выглядеть так —

01101111 01101011

. Процесс декодирования будет обратный. Берем по 8 бит, переводим их в 10-ичную кодировку, получаем номер символа, смотрим по таблице что это за символ.

Unicode

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

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

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

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

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

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

UTF-8

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

UTF-16

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Кодовая таблица ascii русские буквы. Кодировка ASCII (American standard code for information interchange)

Множество символов, с помощью которых записывается текст, называется алфавитом .

Число символов в алфавите – это его мощность .

Формула определения количества информации: N = 2 b ,

где N – мощность алфавита (количество символов),

b – количество бит (информационный вес символа).

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

Т.к. 256 = 2 8 , то вес 1 символа – 8 бит.

Единице измерения 8 бит присвоили название 1 байт:

1 байт = 8 бит.

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

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

Удобство побайтового кодирования символов очевидно, поскольку байт — наименьшая адресуемая часть памяти и, следовательно, процессор может обратиться к каждому символу отдельно, выполняя обработку текста. С другой стороны, 256 символов – это вполне достаточное количество для представления самой разнообразной символьной информации.

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

Понятно, что это дело условное, можно придумать множество способов кодировки.

Все символы компьютерного алфавита пронумерованы от 0 до 255. Каждому номеру соответствует восьмиразрядный двоичный код от 00000000 до 11111111. Этот код просто порядковый номер символа в двоичной системе счисления.

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

Для разных типов ЭВМ используются различные таблицы кодировки.

Международным стандартом для ПК стала таблица ASCII (читается аски) (Американский стандартный код для информационного обмена).

Таблица кодов ASCII делится на две части.

Международным стандартом является лишь первая половина таблицы, т.е. символы с номерами от 0 (00000000), до 127 (01111111).

Структура таблицы кодировки ASCII

Порядковый номер

Код

Символ

0 — 31

00000000 — 00011111

Символы с номерами от 0 до 31 принято называть управляющими.
Их функция – управление процессом вывода текста на экран или печать, подача звукового сигнала, разметка текста и т.п.

32 — 127

00100000 — 01111111

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

128 — 255

10000000 — 11111111

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

Первая половина таблицы кодов ASCII


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

Для букв русского алфавита также соблюдается принцип последовательного кодирования.

Вторая половина таблицы кодов ASCII


К сожалению, в настоящее время существуют пять различных кодировок кириллицы (КОИ8-Р, Windows. MS-DOS, Macintosh и ISO). Из-за этого часто возникают проблемы с переносом русского текста с одного компьютера на другой, из одной программной системы в другую.

Хронологически одним из первых стандартов кодирования русских букв на компьютерах был КОИ8 («Код обмена информацией, 8-битный»). Эта кодировка применялась еще в 70-ые годы на компьютерах серии ЕС ЭВМ, а с середины 80-х стала использоваться в первых русифицированных версиях операционной системы UNIX.

От начала 90-х годов, времени господства операционной системы MS DOS, остается кодировка CP866 («CP» означает «Code Page», «кодовая страница»).

Компьютеры фирмы Apple, работающие под управлением операционной системы Mac OS, используют свою собственную кодировку Mac.

Кроме того, Международная организация по стандартизации (International Standards Organization, ISO) утвердила в качестве стандарта для русского языка еще одну кодировку под названием ISO 8859-5.

Наиболее распространенной в настоящее время является кодировка Microsoft Windows, обозначаемая сокращением CP1251.

С конца 90-х годов проблема стандартизации символьного кодирования решается введением нового международного стандарта, который называется Unicode . Это 16-разрядная кодировка, т.е. в ней на каждый символ отводится 2 байта памяти. Конечно, при этом объем занимаемой памяти увеличивается в 2 раза. Но зато такая кодовая таблица допускает включение до 65536 символов. Полная спецификация стандарта Unicode включает в себя все существующие, вымершие и искусственно созданные алфавиты мира, а также множество математических, музыкальных, химических и прочих символов.

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

Внутреннее представление слов в памяти компьютера

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

Dec Hex Символ Dec Hex Символ
00000спец. NOP12880Ђ
00101спец. SOH12981Ѓ
00202спец. STX13082
00303спец. ETX13183ѓ
00404спец. EOT13284
00505спец. ENQ13385
00606спец. ACK13486
00707спец. BEL13587
00808спец. BS13688
00909спец. TAB13789
0100Aспец. LF1388AЉ
0110Bспец. VT1398B‹ ‹
0120Cспец. FF1408CЊ
0130Dспец. CR1418DЌ
0140Eспец. SO1428EЋ
0150Fспец. SI1438FЏ
01610спец. DLE14490ђ
01711спец. DC114591
01812спец. DC214692
01913спец. DC314793
02014спец. DC414894
02115спец. NAK14995
02216спец. SYN15096
02317спец. ETB15197
02418спец. CAN15298
02519спец. EM15399
0261Aспец. SUB1549Aљ
0271Bспец. ESC1559B
0281Cспец. FS1569Cњ
0291Dспец. GS1579Dќ
0301Eспец. RS1589Eћ
0311Fспец. US1599Fџ
03220сцеп. SP (Пробел)160A0
03321!161A1Ў
03422»162A2ў
03523#163A3Ћ
03624$164A4¤
03725%165A5Ґ
03826&166A6¦
03927»167A7§
04028(168A8Ё
04129)169A9©
0422A*170AAЄ
0432B+171AB«
0442C,172AC¬
0452D173AD­
0462E.174AE®
0472F/175AFЇ
048300176B0°
049311177B1±
050322178B2І
051333179B3і
052344180B4ґ
053355181B5µ
054366182B6
055377183B7·
056388184B8ё
057399185B9
0583A:186BAє
0593B;187BB»
0603C188BCј
0613D=189BDЅ
0623E>190BEѕ
0633F?191BFї
06440@192C0А
06541A193C1Б
06642B194C2В
06743C195C3Г
06844D196C4Д
06945E197C5Е
07046F198C6Ж
07147G199C7З
07248H200C8И
07349I201C9Й
0744AJ202CAК
0754BK203CBЛ
0764CL204CCМ
0774DM205CDН
0784EN206CEО
0794FO207CFП
08050P208D0Р
08151Q209D1С
08252R210D2Т
08353S211D3У
08454T212D4Ф
08555U213D5Х
08656V214D6Ц
08757W215D7Ч
08858X216D8Ш
08959Y217D9Щ
0905AZ218DAЪ
0915B[219DBЫ
0925C\220DCЬ
0935D]221DDЭ
0945E^222DEЮ
0955F_223DFЯ
09660`224E0а
09761a225E1б
09862b226E2в
09963c227E3г
10064d228E4д
10165e229E5е
10266f230E6ж
10367g231E7з
10468h232E8и
10569i233E9й
1066Aj234EAк
1076Bk235EBл
1086Cl236ECм
1096Dm237EDн
1106En238EEо
1116Fo239EFп
11270p240F0р
11371q241F1с
11472r242F2т
11573s243F3у
11674t244F4ф
11775u245F5х
11876v246F6ц
11977w247F7ч
12078x248F8ш
12179y249F9щ
1227Az250FAъ
1237B{251FBы
1247C|252FCь
1257D}253FDэ
1267E~254FEю
1277FСпец. DEL255FFя

ASCII таблица кодов символов Windows.


Описание специальных (управляющих) символов Следует отметить, что первоначально управляющие символы таблицы ASCII использовались для обеспечения обмена данными по телетайпу, ввода данных с перфоленты и для простейшего управления внешними устройствами.
В настоящее время большинство из управляющих символов ASCII таблицы уже не несут эту нагрузку и могут использоваться для иных целей.
Код Описание
NUL, 00Null, пустой
SOH, 01Start Of Heading, начало заголовка
STX, 02Start of TeXt, начало текста.
ETX, 03 End of TeXt, конец текста
EOT, 04End of Transmission, конец передачи
ENQ, 05Enquire. Прошу подтверждения
ACK, 06Acknowledgement. Подтверждаю
BEL, 07Bell, звонок
BS, 08Backspace, возврат на один символ назад
TAB, 09Tab, горизонтальная табуляция
LF, 0ALine Feed, перевод строки.
Сейчас в большинстве языков программирования обозначается как \n
VT, 0BVertical Tab, вертикальная табуляция.
FF, 0CForm Feed, прогон страницы, новая страница
CR, 0DCarriage Return, возврат каретки.
Сейчас в большинстве языков программирования обозначается как \r
SO, 0E Shift Out, изменить цвет красящей ленты в печатающем устройстве
SI, 0F Shift In, вернуть цвет красящей ленты в печатающем устройстве обратно
DLE, 10 Data Link Escape, переключение канала на передачу данных
DC1, 11
DC2, 12
DC3, 13
DC4, 14
Device Control, символы управления устройствами
NAK, 15Negative Acknowledgment, не подтверждаю.
SYN, 16Synchronization. Символ синхронизации
ETB, 17End of Text Block, конец текстового блока
CAN, 18Cancel, отмена переданного ранее
EM, 19End of Medium, конец носителя данных
SUB, 1ASubstitute, подставить. Ставится на месте символа, значение которого было потеряно или испорчено при передаче
ESC, 1BEscape Управляющая последовательность
FS, 1CFile Separator, разделитель файлов
GS, 1DGroup Separator, разделитель групп
RS, 1ERecord Separator, разделитель записей
US, 1FUnit Separator, разделитель юнитов
DEL, 7FDelete, стереть последний символ.
19.12.13 23.8K

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

Что это такое?

ASCII представляет собой кодировочную таблицу печатных символов (см. скриншот №1), набираемых на компьютерной клавиатуре, для передачи информации и некоторых кодов. Иными словами происходит кодирование алфавита и десятичных цифр в соответствующие символы, представляющие и несущие в себе необходимую информацию.


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

Для решения подобных вопросов были разработаны другие версии таблицы ASCII . Например, для языков с иноязычной структурой были или убраны буквы английского алфавита, или к ним добавлялись дополнительные символы в виде национального алфавита. Так, в кодировке ASCII могут присутствовать русские буквы для национального использования (см. скриншот №2).

Где применяется система кодировки ASCII?

Данная кодировочная система необходима не только для набора текстовой информации на клавиатуре. Она также используется в графике. Например, в программе ASCII Art Maker графические изображения различных расширений состоят из спектра символов кодировки ASCII (см. скриншот №3).


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

Данный метод кодировки также может быть востребован во время написания или создания документа HTML. Например, вы вводите определённый и необходимый вам набор знаков, а при просмотре самой страницы на экран будет выведен символ, соответствующий данному коду.

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

  1. Переносимый набор символов;
  2. Управляющие символы;
  3. EBCDIC;
  4. VISCII;
  5. YUSCII;
  6. Юникод;
  7. ASCII art;
  8. КОИ-8.

Свойства таблицы ASCII

Как и любая систематизированная программа, ASCII обладает своими характерными свойствами. Так, например, десятеричная система исчисления (цифры от 0 до 9) преобразуется в двоичную систему исчисления (т.е. каждая десятеричная цифра преобразуется в двоичную 288=1001000 соответственно).

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

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

Применение ASCII в программах Microsoft Office:

В случае необходимости данный вариант кодирования информации может быть использован в Microsoft Notepad и Microsoft Office Word. В рамках этих приложений документ может быть сохранен в формате ASCII , но в этом случае при наборе текста невозможно будет использование некоторых функций.

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

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

Отображение и хранение информации в ЭВМ

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

Как все начиналось

Исторически сложилось так, что первые ЭВМ были англоязычными. Для кодирования символьной информации в них было достаточно использовать всего лишь 7 бит памяти, тогда как для этой цели выделялся 1 байт, состоящий из 8 битов. Количество знаков, понимаемых компьютером в таком случае, было равно 128. В число таких символов входили английский алфавит с его знаками препинания, числа и некоторые специальные символы. Англоязычная семибитная кодировка с соответствующей таблицей (кодовой страницей), разработанная в 1963 году, была названа American Standard Code for Information Interchange. Обычно для ее обозначения использовалась и используется и по сей день аббревиатура «Кодировка ASCII».

Переход к мультиязычности

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

Описание

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

  • Символы с порядковыми номерами от 0 до 31, кодируемые последовательностями от 00000000 до 00011111. Они отведены для управляющих символов, которые руководят процессом вывода текста на экран или принтер, подачей звукового сигнала и т. п.
  • Символы с NN в таблице от 32 до 127, кодируемые последовательностями от 00100000 до 01111111 составляют стандартную часть таблицы. В их число входят пробел (N 32), буквы латинского алфавита (строчные и прописные), десятизначные цифры от 0 до 9, знаки препинания, скобки разного начертания и другие символы.
  • Символы с порядковыми номерами от 128 до 255, кодируемые последовательностями от 10000000 до 11111111. В их число включены буквы национальных алфавитов, отличные от латинского. Именно эта альтернативная часть таблицы кодировка ASCII используется для преобразования в компьютерную форму русских символов.

Некоторые свойства

К особенностям кодировки ASCII относится отличие букв «A» — «Z» нижнего и верхнего регистров только одним битом. Это обстоятельство значительно упрощает преобразование регистра, а также его проверку на принадлежность к заданному диапазону значений. Кроме того, все буквы в системае кодировки ASCII представляются собственными порядковыми номерами в алфавите, которые записаны 5 цифрами в двоичной системе счисления, перед которыми для букв нижнего регистра стоит 011 2 , а верхнего — 010 2 .

К числу особенностей кодировки ASCII можно причислить и представление 10 цифр — «0»-«9». Во второй системе счисления они начинаются с 00112, а заканчиваются 2-ми значениями чисел. Так, 0101 2 эквивалентно десятичному числу пять, поэтому символ «5» записывается как 0011 01012. Опираясь на сказанное, можно легко преобразовать двоично-десятичные числа в строку в кодировке ASCII посредством добавления слева битовой последовательности 00112 к каждому полубайту.

«Юникод»

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

Так, возникла необходимость создания универсальной кодировки текста, разработкой которой при сотрудничестве со многими лидерами мировой IT-индустрии занялся консорциум «Юникод». Его специалистами была создана система UTF 32. В ней для кодирования 1 символа выделялось 32 бита, составляющих 4 байта информации. Главным недостатком было резкое увеличение объема необходимой памяти в целых 4 раза, что влекло за собой множество проблем.

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

В результате дальнейшей работы специалистов из консорциума «Юникод» появилась кодировка UTF-16. Она стала тем вариантом преобразования символьной информации, которая устроила всех как по объему требуемой памяти, так и по числу кодируемых символов. Именно поэтому UTF-16 была принята по умолчанию и в ней для одного знака требуется зарезервировать 2 байта.

Даже эта достаточно продвинутая и удачная версия «Юникода» имела некоторые недостатки, и после перехода от расширенной версии ASCII к UTF-16 увеличивала вес документа в два раза.

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

Связь с American standard code for information interchange

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

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

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

Теперь вы знаете, сколько символов в кодировке ASCII и, как и почему она была разработана. Конечно, сегодня наибольшее распространение в мире получил стандарт «Юникод». Однако нельзя забывать, что он создан на базе ASCII, поэтому следует по достоинству оценивать вклад его разработчиков в сферу IT.

Excel для Office 365 Word для Office 365 Outlook для Office 365 PowerPoint для Office 365 Publisher для Office 365 Excel 2019 Word 2019 Outlook 2019 PowerPoint 2019 OneNote 2016 Publisher 2019 Visio профессиональный 2019 Visio стандартный 2019 Excel 2016 Word 2016 Outlook 2016 PowerPoint 2016 OneNote 2013 Publisher 2016 Visio 2013 Visio профессиональный 2016 Visio стандартный 2016 Excel 2013 Word 2013 Outlook 2013 PowerPoint 2013 Publisher 2013 Excel 2010 Word 2010 Outlook 2010 PowerPoint 2010 OneNote 2010 Publisher 2010 Visio 2010 Excel 2007 Word 2007 Outlook 2007 PowerPoint 2007 Publisher 2007 Access 2007 Visio 2007 OneNote 2007 Office 2010 Visio Стандартный 2007 Visio стандартный 2010 Меньше

В этой статье

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

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

Примечания:

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

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

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

Вставка символов Юникода

Чтобы вставить символ Юникода, введите код символа, затем последовательно нажмите клавиши ALT и X. Например, чтобы вставить символ доллара ($), введите 0024 и последовательно нажмите клавиши ALT и X. Все коды символов Юникода см. в .

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

Примечания:

    Если после нажатия клавиш ALT+X отображается неправильный символ Юникода, выберите правильный код, а затем снова нажмите ALT+X.

    Кроме того, перед кодом следует ввести «U+». Например, если ввести «1U+B5» и нажать клавиши ALT+X, отобразится текст «1µ», а если ввести «1B5» и нажать клавиши ALT+X, отобразится символ «Ƶ».

Использование таблицы символов

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

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

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

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

    В Windows 7 нажмите кнопку Пуск , последовательно выберите Все программы , Стандартные , Служебные и щелкните Таблица символов .

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

Коды часто используемых символов

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

Глиф

Глиф

Денежные единицы

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

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

Дроби

Знаки пунктуации и диалектные символы

Символы форм

Коды часто используемых диакритических знаков

Полный список глифов и соответствующих кодов см. в .

Глиф

Глиф

Непечатаемые управляющие знаки ASCII

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

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

Десятичное число

Знак

Десятичное число

Знак

Освобождение канала данных

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

Первый код управления устройством

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

Второй код управления устройством

Конец текста

Третий код управления устройством

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

Четвертый код управления устройством

пятиконечная

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

Подтверждение

Синхронный режим передачи

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

Конец блока передаваемых данных

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

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

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

Символ замены

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

превышать

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

Двенадцат

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

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

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

Сдвиг без сохранения разрядов

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

Сдвиг с сохранением разрядов

пятнадцат

Разделитель данных

Читайте также…

Виды кодировок символов [АйТи бубен]

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

Так, латинское «А» и кириллическое «А» — это разные символы, потому что они употребляются в разных контекстах и несут в себе разную информацию.

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

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

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

В 1991 году была предпринята попытка создать единую универсальную двухбайтовую кодировку, охватывающую все алфавиты и иероглифические системы мира. Результатом стал стандарт под названием Unicode, покрывающий не только системы письменности всех живых и большинства мертвых языков мира, но и множество музыкальных, математических, химических и прочих символов. Массовое применение Unicode в документах и программах остается делом будущего, для web- дизайнера эта кодировка имеет особое значение, так как именно она объявлена «стандартной кодировкой документа» в HTML начиная с версии 4.

В ближайшее время все более важную роль будет играть особый формат Unicode (и ISO 10646) под названием UTF-8. Эта «производная» кодировка пользуется для записи символов цепочками байтов различной длины (от одного до шести), которые с помощью несложного алгоритма преобразуются в Unicode- коды, причем более употребительным символам соответствуют более короткие цепочки. Главное достоинство этого формата — совместимость с ASCII не только по значениям кодов, но и по количеству бит на символ, так как для кодирования любого из первых 128 символов в UTF-8 достаточно одного байта (хотя, например, для букв кириллицы нужно уже по два байта).

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

На web- странице указать кодировку документа можно двумя cпособами:

Элемент meta является дочерним по отношению к разделу заголовка документа (head) и служит для указания типа и кодировки содержимого страницы. Типом содержимого является структурированный текст в формате html (text/html), используемая кодировка кириллица windows (charset=windows-1251).

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

<?xml version="1.0" encoding="KOI8-U"?>
<!DOCTYPE html PUBLIC ... >
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Моя перша сторiнка</title>
        <meta http-equiv="Content-Type"
              content="text/html; charset=KOI8-U" />
    </head>
    ...
</html>

При сохранении текста выбирайте ту же кодировку, что указали на web-странице.

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

§14. Кодирование текстовой информации | Кодировка ASCII и её расширения (курс фгос 34 ч.)






14.1. Кодировка ASCII и её расширения
Кодирование текстовой информации 14.2. Стандарт Unicode

14.1. Кодировка ASCII и её расширения

Основой для компьютерных стандартов кодирования символов послужил код ASCII (American Standard Code for Information Interchange) — американский стандартный код для обмена информацией, разработанный в 1960-х годах в США и применявшийся для любых, в том числе и некомпьютерных, способов передачи информации (телеграф, факсимильная связь и т. д.). Этот код 7-битовый: общее количество символов составляет 27 = 128, из них первые 32 символа — управляющие, а остальные — изображаемые, т. е. имеющие графическое изображение. К изображаемым символам в ASCII относятся буквы латинского алфавита (прописные и строчные), цифры, знаки препинания и арифметических операций, скобки и некоторые специальные символы. Кодировка ASCII приведена в табл. 3.8.

Таблица 3.8

Кодировка ASCII

Хотя для кодирования символов в ASCII достаточно 7 битов, в памяти компьютера под каждый символ отводится ровно 1 байт (8 битов), при этом код символа помещается в младшие биты, а в старший бит заносится 0.

Например, 01000001 — код прописной латинской буквы «А»; с помощью шестнадцатеричных цифр его можно записать как 41.

Стандарт ASCII рассчитан на передачу только английского текста. Со временем возникла необходимость кодирования и неанглийских букв. Во многих странах для этого стали разрабатывать расширения ASCII -кодировки, в которых применялись однобайтовые коды символов. При этом первые 128 символов кодовой таблицы совпадали с кодировкой ASCII, а остальные (со 128-го по 255-й) использовались для кодирования букв национального алфавита, символов национальной валюты и т. п. Из-за несогласованности этих разработок для многих языков было создано несколько вариантов кодовых таблиц (например, для русского языка их было создано около десятка!).

Впоследствии использование кодовых таблиц было несколько упорядочено: каждой кодовой таблице было присвоено особое название и номер. Для русского языка наиболее распространёнными стали однобайтовые кодовые таблицы CP-866, Windows-1251 (табл. 3.9) и КОИ-8 (табл. 3.10). В них первые 128 символов совпадают с ASCII-кодировкой, а русские буквы размещены во второй части таблицы. Обратите внимание на то, что коды русских букв в этих кодировках различны.

Таблица 3.9

Кодировка Windows-1251

Таблица 3.10

Кодировка КОИ-8

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

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

Cкачать материалы урока



Таблица

Ascii для кодировки кириллицы (CP855)

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

Исходный набор символов , который теперь называется стандартным набором символов, изначально состоял из 128 символов (7-битный код). Первые 32 символа — это управляющие символы (также называемые непечатаемыми символами), которые используются для управления потоками данных, а также такими устройствами, как принтеры.Позже он был расширен для поддержки 256 символов (8-битный код), чтобы обеспечить языковые символы, различные символы, а также символы для рисования прямоугольников: элементы, используемые для целей презентации, позволяющие рисовать различные типы рамок и прямоугольников. Символы в диапазоне 128–255 называются расширенным ASCII.

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

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

Управляющие символы (0 — 31):

Dec Hex Char Описание Dec Hex Char Описание
0 0 NUL (Null) 16 10 DLE (Выход из канала передачи данных)
1 1 SOH (начало заголовка) 17 11 DC1 (Управление устройством 1)
2 2 STX ( Начало текста) 18 12 DC2 (Управление устройством 2)
3 3 ETX (Конец текста) 19 13 DC3 (Управление устройством 3 )
4 4 EOT (конец передачи) 20 14 DC4 (Device Control 4)
5 5900 25 ENQ (запрос) 21 15 NAK (отрицательное подтверждение)
6 6 ACK (подтверждение) 22 16 SYN (синхронный холостой ход)
7 7 BEL (Bell) 23 17 ETB (конец блока передачи)
8 8 BS (BackSpace) 24 18 CAN (отмена)
9 9 HT (горизонтальная таблица) 25 19 EM (конец среды)
10 A LF (перевод строки) 26 1A SUB (замена)
11 B VT (вертикальное табулирование) 27 1B ESC (выход)
12 C FF (подача формы) 28 1C FS (разделитель файлов)
13 D CR (Возврат каретки) 29 1D GS (Разделитель групп)
14 E SO (Shift Out) 30 1E RS (Разделитель записей)
15 F SI (сдвиг внутрь) 31 1F US (разделитель единиц)

Стандартный набор символов (32-127):

9002 4 114
Dec Hex Char Описание Dec Hex Char Описание
32 20 Пространство 80 50 Верхний корпус P
33 21 Восклицательный знак 81 51 Верхний корпус Q
34 22 Котировальный знак 82 52 Верхний корпус R
35 23 Хеш 83 53 Верхний корпус S
36 24 Доллар 84 54 Верхний корпус T
37 25 Процент 85 55 Верхний ок. se U
38 26 Ampersand 86 56 Верхний корпус V
39 27 Апостроф 87 57 Верхний корпус W
40 28 Открытый кронштейн 88 58 Верхний корпус X
41 29 Закрытый кронштейн 89 59 Верхний корпус Y
42 2A Asterisk 90 5A Верхний корпус Z
43 2B Plus 91 5B Открытый квадратный кронштейн
44 2C Запятая 92 5C Обратная косая черта
45 2D Чертеж 93 5D Закрытый квадратный кронштейн
46 2E Полная остановка 94 5E Каретка
47 2F Слэш 95 5F Подчеркивание
48 30 Ноль 96 60 Могильный акцент
49 31 Один 97 61 Нижний корпус a
50 32 Два 98 62 Нижний корпус b
51 33 Три 99 63 Нижний корпус c
52 34 9002 5 Четыре 100 64 Нижний корпус d
53 35 Пять 101 65 Нижний корпус e
54 36 Шесть 102 66 Нижняя часть корпуса f
55 37 Семь 103 67 Нижняя часть корпуса g
56 38 Восемь 104 68 Нижняя часть корпуса h
57 39 Девять 105 69 Нижняя часть корпуса i
58 3A Колонка 106 6A Нижний регистр j
59 3B Точка с запятой 107 6B Нижняя часть корпуса k
60 3C Менее 108 6C Нижняя часть корпуса l
61 3D Знак равенства 109 6D Нижний регистр m
62 3E Больше чем 110 6E Нижний регистр n
63 3F Вопросительный знак 111 6F Нижняя часть корпуса o
64 40 At 112 70 Нижняя часть корпуса p
65 41 Верхняя часть корпуса A 113 71 Нижний корпус q
66 42 Верхний корпус B 72 Нижний корпус r
67 43 Верхний корпус C 115 73 Нижний корпус s
68 44 Верхний корпус D 116 74 Нижняя часть корпуса t
69 45 Верхняя часть корпуса E 117 75 Нижняя часть корпуса u
70 46 Верхняя часть корпуса F 118 76 Нижняя часть корпуса v
71 47 Верхняя часть корпуса G 119 77 Нижняя часть корпуса w
72 48 Верхний корпус H 120 78 Нижний корпус x
73 49 Верхний корпус e I 121 79 Нижняя часть корпуса y
74 4A Верхняя часть корпуса J 122 7A Нижняя часть корпуса z
75 4B Верхний кожух K 123 7B Открытый раскос
76 4C Верхний кожух L 124 7C Труба
77 4D Верхняя часть M 125 7D Закрывающая скоба
78 4E Верхняя часть N 126 7E Тильда
79 4F Верхняя case O 127 7F Удалить

Расширенный набор символов (128-255):

900 24 C4 90 024 207 900 900
Dec Hex Char Описание Dec Hex Char Описание
128 80 Кириллический нижний регистр dje 192 C0 Коробка рисунки светятся и справа
129 81 Верхний регистр кириллицы DJE 193 C1 Чертежи светятся и горизонтально
130 82 Кириллица нижний регистр gje 194 C2 Чертежи коробки с подсветкой вниз и горизонтально
131 83 Верхний регистр с кириллицей GJE 195 C3 Чертежи коробки с подсветкой вертикально и справа
132 84 Кириллица в нижнем регистре io 196 Чертежи коробки световой горизонтальный
133 85 Верхний регистр с кириллицей 197 C5 Чертежи коробки светлый вертикальный и горизонтальный
134 86 Кириллический нижний регистр украинский ie 198 C6 Кириллица нижний регистр ka
135 87 Кириллица верхний регистр украинский IE 199 C7 Кириллица верхний регистр KA
136 88 Кириллица нижний регистр dze 200 C8 Чертежи коробки, сдвоенные вверх и вправо
137 89 Верхний регистр кириллицы DZE 201 C9 Чертежи коробки, сдвоенные вниз и вправо
138 8A 900 25 Нижний регистр кириллицы белорусско-украинский i 202 CA Чертежи боксов, сдвоенные и горизонтальные
139 8B Верхний регистр кириллицы белорусско-украинский I 203 CB Чертежи коробки, сдвоенные вниз и горизонтально
140 8C Нижний регистр кириллицы yi 204 CC Чертежи коробки двойные вертикальные и правые
141 8D Кириллица верхний корпус YI 205 CD Чертежи коробки двойной горизонтальный
142 8E Кириллица нижний регистр je 206 CE Чертежи коробки двойной вертикальный и горизонтальный
143 8F Верхний регистр с кириллицей JE CF Знак валюты
144 90 Строчная кириллица lje 208 D0 Строчная кириллица el
145 91 Кириллица верхний регистр LJE 209 D1 Верхний регистр кириллицы EL
146 92 Нижний регистр кириллицы nje 210 D2 Нижний регистр кириллицы em
147 93 Верхний регистр кириллицы NJE 211 D3 Верхний регистр кириллицы EM
148 94 Кириллица нижний регистр tshe 212 D4 Кириллица нижний регистр
149 95 Верхний регистр с кириллицей TSHE 2 13 D5 Верхний регистр кириллицы EN
150 96 Нижний регистр кириллицы kje 214 D6 Нижний регистр кириллицы o
151 97 Верхний регистр с кириллицей KJE215 D7 Верхний регистр с кириллицей O
152 98 Кириллица с коротким регистром u 216 D8 Нижний регистр с кириллицей pe
153 99 Верхний регистр кириллицы короткий U 217 D9 Чертежи коробки светятся и слева
154 9A Нижний регистр кириллицы дже 218 DA Чертежи коробки светлые и правые
155 9B Кириллица u pper case DZHE 219 DB Полный блок
156 9C Кириллический нижний регистр yu 220 DC Нижний полублок
157 9D Верхний регистр кириллицы YU 221 DD Верхний регистр кириллицы PE
158 9E Жесткий знак нижнего регистра кириллицы 222 DE Нижний регистр кириллицы ya
159 9F Кириллический верхний регистр жесткий знак 223 DF Верхний полублок
160 A0 Кириллический нижний регистр a 224 E0 Верхний регистр с кириллицей YA
161 A1 Верхний регистр с кириллицей A 9 0025 225 E1 Нижний регистр кириллицы er
162 A2 Нижний регистр кириллицы be 226 E2 Верхний регистр кириллицы ER
163 A3 Верхний регистр кириллицы BE 227 E3 Нижний регистр кириллицы es
164 A4 Кириллица нижний регистр tse 228 E4 Кириллица верхний регистр ES
165 A5 Верхний регистр кириллицы TSE 229 E5 Нижний регистр кириллицы te
166 A6 Нижний регистр кириллицы 230 E6 Кириллица верхняя часть корпуса TE
167 A7 кириллица верхняя часть корпуса DE 900 25 231 E7 Нижний регистр кириллицы u
168 A8 Нижний регистр кириллицы т.е. 232 E8 Верхний регистр кириллицы U
169 A9 Верхний регистр кириллицы IE 233 E9 Нижний регистр кириллицы
170 AA Нижний регистр кириллицы ef 234 EA Верхний регистр кириллицы ZHE
171 AB Верхний регистр кириллицы EF 235 EB Нижний регистр кириллицы ve
172 AC Кириллица нижний регистр ghe 236 EC Кириллица верхняя часть корпуса VE
173 AD кириллица верхняя часть корпуса GHE 237 ED Мягкий знак нижнего регистра кириллицы
174 AE Двойные угловые кавычки, указывающие влево 238 EE Мягкий знак верхнего регистра кириллицы
175 AF Двойные угловые кавычки, указывающие вправо 239 EF Цифровой знак
176 B0 Светлый оттенок 240 F0 Мягкий перенос
177 B1 Средний оттенок 241 F1 Нижний регистр кириллицы yeru
178 B2 Темный оттенок 242 F2 Верхний регистр кириллицы
179 B3 Чертежи коробки световой вертикальный 90 025 243 F3 Нижний регистр с кириллицей ze
180 B4 Чертежи коробки светлые вертикально и слева 244 F4 Верхний регистр с кириллицей ZE
181 B5 Нижний регистр кириллицы ha 245 F5 Нижний регистр кириллицы sha
182 B6 Верхний регистр кириллицы HA 246 F6 Верхний регистр кириллицы SHA
183 B7 Нижний регистр кириллицы i 247 F7 Нижний регистр кириллицы e
184 B8 Верхний регистр кириллицы I 248 F8 Верхний регистр с кириллицей e
185 B9 Чертежи коробки дубль левая вертикальная и левая 249 F9 Кириллица нижняя ща
186 BA Чертежи коробки двойная вертикальная 250 FA Кириллица верхняя ЩА
187 BB Чертежи коробки сдвоены вниз и влево 251 FB ​​ Кириллица в нижнем регистре che
188 BC Чертежи коробки сдвоены вверх и влево 252 FC Верхний регистр с кириллицей CHE
189 BD Короткий нижний регистр с кириллицей i 253 FD Знак раздела
190 BE Короткий верхний регистр с кириллицей I 254 FE Черный квадрат
191 BF 90 025 Чертежи коробки светятся вниз и влево 255 FF Без разрывов

Таблица Ascii для кириллической кодировки (CP866)

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

Исходный набор символов , который теперь называется стандартным набором символов, изначально состоял из 128 символов (7-битный код). Первые 32 символа — это управляющие символы (также называемые непечатаемыми символами), которые используются для управления потоками данных, а также такими устройствами, как принтеры. Позже он был расширен для поддержки 256 символов (8-битный код), чтобы обеспечить языковые символы, различные символы, а также символы для рисования прямоугольников: элементы, используемые для целей презентации, позволяющие рисовать различные типы рамок и прямоугольников.Символы в диапазоне 128–255 называются расширенным ASCII.

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

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

Управляющие символы (0 — 31):

Dec Hex Char Описание Dec Hex Char Описание
0 0 NUL (Null) 16 10 DLE (Выход из канала передачи данных)
1 1 SOH (начало заголовка) 17 11 DC1 (Управление устройством 1)
2 2 STX ( Начало текста) 18 12 DC2 (Управление устройством 2)
3 3 ETX (Конец текста) 19 13 DC3 (Управление устройством 3 )
4 4 EOT (конец передачи) 20 14 DC4 (Device Control 4)
5 5900 25 ENQ (запрос) 21 15 NAK (отрицательное подтверждение)
6 6 ACK (подтверждение) 22 16 SYN (синхронный холостой ход)
7 7 BEL (Bell) 23 17 ETB (конец блока передачи)
8 8 BS (BackSpace) 24 18 CAN (отмена)
9 9 HT (горизонтальная таблица) 25 19 EM (конец среды)
10 A LF (перевод строки) 26 1A SUB (замена)
11 B VT (вертикальное табулирование) 27 1B ESC (выход)
12 C FF (подача формы) 28 1C FS (разделитель файлов)
13 D CR (Возврат каретки) 29 1D GS (Разделитель групп)
14 E SO (Shift Out) 30 1E RS (Разделитель записей)
15 F SI (сдвиг внутрь) 31 1F US (разделитель единиц)

Стандартный набор символов (32-127):

9002 4 114
Dec Hex Char Описание Dec Hex Char Описание
32 20 Пространство 80 50 Верхний корпус P
33 21 Восклицательный знак 81 51 Верхний корпус Q
34 22 Котировальный знак 82 52 Верхний корпус R
35 23 Хеш 83 53 Верхний корпус S
36 24 Доллар 84 54 Верхний корпус T
37 25 Процент 85 55 Верхний ок. se U
38 26 Ampersand 86 56 Верхний корпус V
39 27 Апостроф 87 57 Верхний корпус W
40 28 Открытый кронштейн 88 58 Верхний корпус X
41 29 Закрытый кронштейн 89 59 Верхний корпус Y
42 2A Asterisk 90 5A Верхний корпус Z
43 2B Plus 91 5B Открытый квадратный кронштейн
44 2C Запятая 92 5C Обратная косая черта
45 2D Чертеж 93 5D Закрытый квадратный кронштейн
46 2E Полная остановка 94 5E Каретка
47 2F Слэш 95 5F Подчеркивание
48 30 Ноль 96 60 Могильный акцент
49 31 Один 97 61 Нижний корпус a
50 32 Два 98 62 Нижний корпус b
51 33 Три 99 63 Нижний корпус c
52 34 9002 5 Четыре 100 64 Нижний корпус d
53 35 Пять 101 65 Нижний корпус e
54 36 Шесть 102 66 Нижняя часть корпуса f
55 37 Семь 103 67 Нижняя часть корпуса g
56 38 Восемь 104 68 Нижняя часть корпуса h
57 39 Девять 105 69 Нижняя часть корпуса i
58 3A Колонка 106 6A Нижний регистр j
59 3B Точка с запятой 107 6B Нижняя часть корпуса k
60 3C Менее 108 6C Нижняя часть корпуса l
61 3D Знак равенства 109 6D Нижний регистр m
62 3E Больше чем 110 6E Нижний регистр n
63 3F Вопросительный знак 111 6F Нижняя часть корпуса o
64 40 At 112 70 Нижняя часть корпуса p
65 41 Верхняя часть корпуса A 113 71 Нижний корпус q
66 42 Верхний корпус B 72 Нижний корпус r
67 43 Верхний корпус C 115 73 Нижний корпус s
68 44 Верхний корпус D 116 74 Нижняя часть корпуса t
69 45 Верхняя часть корпуса E 117 75 Нижняя часть корпуса u
70 46 Верхняя часть корпуса F 118 76 Нижняя часть корпуса v
71 47 Верхняя часть корпуса G 119 77 Нижняя часть корпуса w
72 48 Верхний корпус H 120 78 Нижний корпус x
73 49 Верхний корпус e I 121 79 Нижняя часть корпуса y
74 4A Верхняя часть корпуса J 122 7A Нижняя часть корпуса z
75 4B Верхний кожух K 123 7B Открытый раскос
76 4C Верхний кожух L 124 7C Труба
77 4D Верхняя часть M 125 7D Закрывающая скоба
78 4E Верхняя часть N 126 7E Тильда
79 4F Верхняя case O 127 7F Удалить

Расширенный набор символов (128-255):

9002 4 138
Dec Hex Char Описание Dec Hex Char Описание
128 80 Верхний регистр с кириллицей A 192 C0 Коробка рисунки светятся и справа
129 81 Верхний регистр с кириллицей BE 193 C1 Чертежи светятся и горизонтально
130 82 Верхний регистр с кириллицей VE 194 C2 Чертежи коробки с подсветкой вниз и по горизонтали
131 83 Верхний регистр с кириллицей GHE 195 C3 Чертежи коробки с подсветкой вертикально и справа
132 84 Верхний регистр с кириллицей DE 196 C 4 Чертежи коробки светлые горизонтальные
133 85 Верхний регистр кириллицы IE 197 C5 Чертежи коробки светлые вертикальные и горизонтальные
134 86 Кириллица верхний корпус ZHE 198 C6 Чертежи коробок вертикальные одинарные и правые двойные
135 87 Верхний регистр кириллицей ZE 199 C7 Чертежи коробок вертикальные двойные и правые одинарные
136 88 Верхний регистр с кириллицей I 200 C8 Чертежи коробки, сдвоенные вверх и вправо
137 89 Верхний регистр с кириллицей короткий I 201 C9 Чертежи коробки, сдвоенные вниз и вправо
8A Верхний регистр с кириллицей KA 202 CA Чертежи коробки, сдвоенные и горизонтальные
139 8B Верхний регистр с кириллицей EL 203 CB Чертежи коробки, сдвоенные по вертикали и по горизонтали
140 8C Верхний регистр с кириллицей EM 204 CC Чертежи коробки сдвоенный по вертикали и справа
141 8D Верхний кириллица корпус EN 205 CD Чертежи коробки двойные горизонтальные
142 8E Кириллица верхний регистр O 206 CE Чертежи коробок двойные вертикальные и горизонтальные
143 8F Верхняя часть корпуса с кириллицей PE207 CF Чертежи коробки вверх одинарные и горизонтальные двойные
144 90 Верхний регистр с кириллицей ER 208 D0 Чертежи коробок вверх двойные и горизонтальные одинарные
145 91 Верхний регистр с кириллицей ES 209 D1 Чертежи коробки внизу, одинарная и горизонтальная двойная
146 92 Верхняя часть кириллицы TE 210 D2 Чертежи коробки внизу двойной и горизонтальный одинарный
147 93 Верхний регистр с кириллицей U 211 D3 Чертежи коробки вверх двойной и правый одинарный
148 94 Верхний регистр с кириллицей EF 212 D4 Коробка чертежей вверх одинарная и правая двойная e
149 95 Верхний регистр с кириллицей HA 213 D5 Чертежи коробки внизу одинарный и правый двойной
150 96 Верхний регистр с кириллицей TSE 214 D6 Чертежи коробки внизу, двойная и правая, одинарная
151 97 Верхний регистр с кириллицей CHE 215 D7 Чертежи коробки вертикальный двойной и горизонтальный одинарный
152 98 Верхний регистр с кириллицей SHA 216 D8 Чертежи коробки вертикальный одинарный и горизонтальный двойной
153 99 Верхний регистр с кириллицей SHCHA 217 D9 Коробка рисунки загораются и слева
154 9A Верхний регистр с кириллицей жесткий знак 218 DA Чертежи коробки с подсветкой снизу и справа
155 9B Верхний регистр с кириллицей YERU 219 DB Полный блок
156 9C Кириллический верхний регистр мягкий знак 220 DC Нижний полублок
157 9D Кириллический верхний регистр E 221 DD Левый полублок
158 9E Верхний регистр с кириллицей YU 222 DE Правый полублок
159 9F Верхний регистр с кириллицей YA 223 DF Верхний полублок
160 A0 Кириллица нижний регистр a 224 E0 Нижний регистр кириллицы er
161 A1 Нижний регистр кириллицы be 225 E1 Кириллица нижний регистр es
162 A2 Строчная кириллица ve 226 E2 Строчная кириллица te
163 A3 Строчная кириллица ghe 227 E3 Строчная кириллица u
164 A4 Нижний регистр кириллицы 228 E4 Нижний регистр кириллицы ef
165 A5 Строчный регистр кириллицы т.е. 229 E5 Строчная кириллица ha
166 A6 Строчная кириллица r case zhe 230 E6 Кириллица нижний регистр tse
167 A7 Кириллица нижний регистр ze 231 E7 Кириллица нижний регистр
168 A8 Строчная кириллица i 232 E8 Строчная кириллица sha
169 A9 Строчная кириллица, укороченная i 233 E9 Строчная кириллица ща
170 AA Кириллица нижний регистр ка 234 EA Кириллица нижний регистр жесткий знак
171 AB Кириллица нижний регистр el 235 EB Кириллица в нижнем регистре yeru
172 AC 900 24 Нижний регистр кириллицы em 236 EC Мягкий знак кириллицы нижний регистр
173 AD Строчный регистр кириллицы en 237 ED Строчный регистр кириллицы e
174 AE Строчная кириллица o 238 EE Строчная кириллица yu
175 AF Строчная кириллица pe 239 EF Cyrillic нижний регистр ya
176 B0 Светлый оттенок 240 F0 Кириллический верхний регистр IO
177 B1 Средний оттенок 241 F1 Нижний регистр кириллицы io
178 B2 Темный оттенок 242 F2 Кириллица верхний регистр украинский IE
179 B3 Чертежи коробки светлый вертикальный 243 F3 Кириллица нижний регистр украинский ie
180 B4 Чертежи коробки светлые вертикально и слева 244 F4 Верхний регистр кириллицы YI
181 B5 Чертежи коробки вертикальный одинарный и левый двойной 245 F5 Кириллица нижний регистр yi
182 B6 Чертежи коробок вертикальные двойные и слева одинарные 246 F6 Кириллический верхний регистр короткий U
183 B7 Чертежи коробок вниз двойные и левый одинарный 247 F7 Кириллица нижняя ок. se short u
184 B8 Чертежи коробки внизу, одинарная и слева, двойная 248 F8 Знак градуса
185 B9 Чертежи коробки двойные вертикально и слева 249 F9 Оператор пули
186 BA Чертежи коробки двойные вертикальные 250 FA Средняя точка
187 BB Двойные чертежи коробки вниз и влево 251 FB ​​ Квадратный корень
188 BC Чертежи прямоугольников, сдвоенные вверх и влево 252 FC Цифровой знак
189 BD Чертежи коробки вверх двойная и левая одинарная 253 FD Знак валюты
190 BE Чертежи коробки вверх одинарный и левый двойной 254 FE Черный квадрат
191 BF Чертежи коробки светлые вниз и влево 255 FF Без пробелов

The Cyrillic Charset Soup

The Cyrillic Charset Soup Несмотря на то, что ISO 8859 содержит стандарт Кодировка кириллицы, есть еще куча других кодировок кириллицы используется на компьютерах по всему миру.Эта страница пытается объяснить, почему это так, давая исторический обзор. Каждая кодировка проиллюстрирована с помощью растрового изображения GIF вместе с базовой таблицей сопоставления Unicode и Шрифт BDF (X / Unix).

Кириллица

Братья и православные славянские монахи Кирилл и Мефодий изобрел глаголицу в Македонии в 863 году как зашифрованный греческий алфавит с расширениями для особых славянских звуков. Их ученый Климент Охридский изобрел «кириллицу» позже, когда более читаемый преобразованный глаголический алфавит.В течение веками кириллица была распространена и преобразована, и она была модернизирована в ее нынешнюю романизированную форму (Гражданка) под Царь Петр Великий.

В настоящее время кириллица используется более чем на 70 языках. от славянских языков Восточной Европы русский (ру), украинский (uk), белорусский (be), болгарский (bg), сербский (sr) и македонский (mk) над алтайскими языками Средней Азии, такими как азербайджанский (az), туркменский (tk), Курдский (ку), узбекский (uz), казахский (kk), киргизский (ky) другим, таким как Таджикский (tg) и монгольский (mn).В вашей библиотеке может быть буклет «Альфавиты языков народов СССР» Кенесбая Мусаевича Мусаева, который был опубликовано в 1965 году.

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

Самая старая стандартизированная кириллическая компьютерная кодировка, найденная мною (в Иоанна Clews ‘Language Automation Worldwide) — государственный стандарт ГОСТ 13052, 7-битная кодировка, кодирующая буквы русского алфавита. алфавит (который также удовлетворяет все болгарские потребности) на вершине соответствующие буквы ASCII противоположного регистр (чтобы распознать русский текст типа «РУССКИЙ ТЕКСТ» по его регистру, когда представлены в кодировке ASCII.Я буду называть это свойство соответствием KOI), пожертвовал пунктиром, чтобы уменьшить алфавит до 32 букв. помещается в два ряда и убирает редко используемый ЗАПИСНОЙ ЖЕСТКИЙ ЗНАК на предотвратить его столкновение с DELETE в позиции = 7F или EOF = -1:


кодировка = koi-0 [ТЕКСТ] [BDF]

Дело в том, что болгарский гораздо чаще использует ЗАГЛАВНЫЙ ЗНАК побудили некоторых болгар закодировать свой жесткий знак поверх ненужный русский YERY bI вместо этого.

В 1974 г. ГОСТ опубликовал еще один государственный стандарт ГОСТ 19768-74, с двумя кодировками, которые обе смешали латинский и кириллический алфавиты в одном наборе, сохранив Оригинальная идея корреспонденции KOI жива:

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


кодировка = koi-7 [ТЕКСТ] [BDF]

Вторая кодировка определена в ГОСТе. 19768-74 гг. Был знаменитый 8-битный Код для обмена и обработки Информации (КОИ-8), давшей расшифровываемую Текст ASCII, когда был удален старший бит, и по праву может быть называется кириллица ASCII.Вот изображение его верхней части (G1):


кодировка = koi8-a [ТЕКСТ] [BDF]

KOI-8 использовался на многих сетевых Unix-хостах. Естественно, прижился знак доллара ASCII $ вместо знака международной валюты, хотя это не было политкорректный. Пунктирная (йо) добавлена ​​в столбец 3, поэтому что такие слова, как e (yeyo), больше не нужно писать без ударения ее.

Вернее, последний шаг не происходил, пока компания Demos не начала портировать Поддержка кириллицы для ОС Unix для ПК, таких как Xenix в конце 1980-х и разработал новую российскую кодовую страницу КОИ-8, которая позже стала известна как KOI8-R с пунктирной точкой в ​​позиции от первый проект DIS-6937-8 / DIS-8859-5 и все нерусские буквы вычищены и заменены блочной графикой.

Но многие поставщики шрифтов реализовали только подмножество букв. Разрешите нам назовем его КОИ8-Б, это расширенная (большая) база КОИ-8, содержащая буквы (буквы) общие (баса) для всех современных вариантов КОИ-8:


кодировка = koi8-b [ТЕКСТ] [BDF]

В середине 1980-х годов ECMA комитет по разработке серии ISO-8859 и его кириллица ISO-8859-5 хотела сохранить совместимость с установлена ​​база десятилетнего стандарта КОИ-8 и элегантно добавлены отсутствующие украинский, белорусский, Сербские и македонские буквы в неиспользуемых кодовых точках.Их проект был опубликован как 1-е издание стандарта ECMA-113 в 1986 году и проект международного стандарта DIS-8859-5 в 1987 г. и был зарегистрирован с номером 111 в Международном реестре ISO наборов символов, которые будут использоваться с escape-символом (ISO-2022) последовательности, отсюда и название ISO-IR-111 и псевдоним ECMA-кириллица:


кодировка = koi8-e [ТЕКСТ] [BDF]

ISO-IR-111 так и не был принят в качестве окончательного ISO-8859-5, потому что за это время ГОСТ пережил некоторую перестройку и объявил установленную базу и KOI соответствие менее важным и пересмотрело его стандарт 19768 года с 1974 по 1987 год в несовместимый новый ГОСТ 19768-87, в котором русские буквы перемещены на одну строку вверх и заказал их в родном русском словаре порядка (АБВГД) вместо порядка корреспонденции KOI (ABCDE):


кодировка = ГОСТ-19768-87 [ТЕКСТ] [BDF]

ECMA сразу же последовала за ГОСТом по совету советских экспертов, пересмотрев свои первые предложение и перестановка их ISO-IR-111 на позиции кода нового ГОСТ 19768-87.Дизайнеры не дошли до сортировки нерусские буквы в русский алфавит для обеспечения правильного порядок словаря для всех языков, как, например, в Стандарт ISO 9 (Транслитерация кириллицы). Пересмотренное предложение опубликовано как 2-е издание ECMA-113: 1988 (заменяющее исходное ECMA-113: 1986, который стал жить дальше (популярен благодаря сочетанию нерусских букв с КОИ-8 совместимость) под своим ником ECMA-Cyrillic (хотя ECMA ссылается на вы переходите к ISO-8859-5 сейчас) или ISO-IR-111) и приняли в ISO 8859 (несмотря на советское голосование против знак доллара) в качестве окончательного стандарта ISO-8859-5 (ISO-IR-144) в 1988 году.Многие люди, включая меня, считают, что это избавило бы нас от многих проблема, если исходный KOI8-совместимый DIS-8859-5: 1987 также был выбран ISO-8859-5: 1988. Сейчас мы имеют международный стандарт ISO-8859-5, который так нестандартен что его почти никто не любит и не использует:


кодировка = ISO-8859-5 [ТЕКСТ] [BDF]

после RFC 1341 (MIME) предложил использовать кириллицу ISO-8859-5 в электронной почте. общение, пока русский раздел Интернета (группы новостей relcom. *) все еще использовал KOI-8, Андрей Чернов отправился в опубликовать его RFC 1489 Регистрация набора символов кириллицы «КОИ8-Р» и установил KOI8-R как стандарт де-факто в Интернете.KOI8-R, который позже был также пронумерован как CP878, содержит пунктирный KOI8 плюс много графических персонажей:


кодировка = koi8-r [ТЕКСТ] [BDF]

Андрей Чернов предлагает много практической информации о КОИ8-Р. на его сайте.

Со всеми этими кодировками есть особая украинская проблема. Украинцы читают букву GHE со штрихом вниз как хе. Написать исправьте ghe им нужна украинская буква GHE С UPTURN, которая была был подавлен сталинскими чиновниками и восстановлен в 1990 году.

Можно злоупотребить акцентированным GHE (македонским GJE) в ISO-IR-111 или ISO-8859-5 для представления GHE WITH UPTURN, но это не похоже на быть предпочтительным вариантом. Украинцы, кажется, предпочитают кодировки, которые включить реальный GHE с UPTURN. GHE WITH UPTURN присутствует в Microsoft CP1251, Fingertip KOI8-Unified и, конечно же, Unicode. Тем не менее, эти варианты не казались близкими Достаточно KOI8-R, чтобы остановить украинских почтмейстеров от разработки новый КОИ8-У и его публикация как RFC2319 в Апрель 1998 г.КОИ8-У добавил только украинские буквы в позициях совместим с ISO-IR-111, используемым многими Украинцы и сохранили как можно больше фигурок-рисовальщиков, потому что многие пользователи в этой области все еще застряли на MS-DOS. Из-за этого предпочтение, в нем отсутствуют короткое U с белорусским акцентом, сербское и Македонская поддержка:


кодировка = koi8-u [ТЕКСТ] [BDF]

Я предполагаю, что спецификация RFC2319 и RFC1489 пули KOI8-R как математическая U + 2219 BULLET OPERATOR — это ошибка, унаследованная от RFC1345 и должна быть исправлено на U + 2022 BULLET, как в собственных таблицах Келда Симонсена для IBM437 или KOI8-R.В целом обратите внимание, что RFC1345 и все, что на нем основано, например, GNU recode 3.4.1 содержал ряд ошибок, особенно в области кириллицы: его isoir111 больше похож на cp1251, чем на koi8. RFC2319 содержит дополнительная ошибка, которая кодирует Кириллическую ЗАГЛАВНУЮ БУКВУ UKRAINIAN IE как U + 0403 вместо U + 0404.

Питер Кассетта из Fingertip Программное обеспечение, которое также опубликовало красивую кириллицу ссылка на кодировку для его клиентов уже разработана и предложил другое решение: Его KOI8-Unified объединяет все ISO-IR-111 буквы с украинскими буквами КОИ8-У и базовая блочная графика KOI8-R и некоторые популярные символы из кодовых страниц Windows 1251 и 1252, уравновешивая различные потребности совместимости:


кодировка = koi8-f [ТЕКСТ] [BDF]

Вы можете использовать этот шрифт koi8-f для отображения всего текста koi8- * и всего буквы будут отображаться правильно, но некоторые из менее используемых изображений символы в koi8-r могут отображаться неправильно.

Еще один серьезный игрок на поле — WinCyrillic Windows от Microsoft. кодовая страница CP1251, для которой Microsoft зарегистрировала этикетку «Windows-1251», которая не должна быть ошибочно принят за предшественник сегодняшней Windows95 в 13 веке. По состоянию на В декабре 1997 года вас приветствует даже новый веб-сервер ГОСТ (Lotus Notes). с charset = WINDOWS-1251 — ГОСТ (Российская стандартизация органа и органа-члена ISO) не даже следуя собственным стандартам, любой более! CP1251 имеет богатый репертуар в порядке, не совместимом ни с ISO-IR-111 (KOI8), ни с ISO-8859-5:


кодировка = Windows-1251 [ТЕКСТ] [BDF]

MacUkrainian (= MacCyrillic + GHE WITH UPTURN) имеет те же буквы в еще одном порядке:


кодировка = MacУкраинский язык [ТЕКСТ] [BDF]

Более старой популярной кодировкой является вариант Альтернативный, охватываемый MS-DOS CP866:


кодировка = cp866 [ТЕКСТ] [BDF]

Болгарский Prawec 16 ПК и болгарский раскладка клавиатуры в Linux использует кодировку MIK:


кодировка = болгарский-мик [ТЕКСТ] [BDF]

Вы устали от этого множества кодировок, в которых самый лучший? Хотели бы вы иметь одну хорошую кодировку, способную заменить все вышеперечисленное и везде примут? Не могли бы вы тоже любите писать неславянские кириллические языки? Вы получаете все это и многое другое с Unicode (ISO-10646), который просто кодирует все персонажи мира.

Это блок кириллицы U + 0400 в Unicode. Это следует по порядку ISO-8859-5:


кодировка = юникод-2-1 [ТЕКСТ] [BDF]

Ольга Лапко заявляет на страницах 175 и 179 блестящего выпуска TUGboat 17-2 (Труды Ежегодная встреча группы пользователей TeX в 1996 г. в Дубне, Россия), что около 100 В Unicode по-прежнему отсутствуют кириллические буквы. Большинство из них кажутся кодируются с комбинированием акцентов, а остальные могут быть добавлены с помощью процедуры, описанной в Приложение B, однако, отправка новых символов стандарта Unicode.

Каждая буква кириллицы кодируется двумя байтами в UTF-8. Стандартная схема сжатия для Unicode (SCSU) позволяет сократить это число до традиционного — один байт на букву.

Я все еще пишу Unicode-HOWTO для Linux. Я добавил Cyrillic.kmap, злоупотребляющий ISO 9 транслитерация как метод ввода в текстовый редактор Yudit Unicode для X Window System.

Я призываю вас присылать свои комментарии по адресу [email protected]. я благодарен Кристофер Неханив, Андреас Прилоп, Питер Кассетта <пит @ кириллица.com>, Андрей Чернов, Кельд Симонсен, Борислав Стоянов, Гюнчо Скордев, Илья Винарский, Дима Володин, Кристиан Вайсгербер, Алена Кесси и Юрию Демченко за предоставленную ценную информацию.

Роман Чиборра
1998-05-25 .. 1998-11-30

Проект документации Linux


Информация о LDP
FAQ
Манифест / лицензия
История
Волонтеры / сотрудники
Описание вакансий
Списки рассылки
IRC
Обратная связь

Автор / внесение вклада
Руководство для авторов LDP
Внесите свой вклад / Помогите
Ресурсы
Как отправить
Репозиторий GIT
Загрузок
Контакты

Спонсор сайта LDP
Мастерская

LDP Wiki : LDP Wiki — это отправная точка для любой незавершенной работы
Члены | Авторы | Посетители
Документы

HOWTO : тематическая справка
последние обновления | основной индекс | просматривать по категориям
Руководства : более длинные, подробные книги
последние обновления / основной указатель
Часто задаваемые вопросы : Часто задаваемые вопросы
последние обновления / основной указатель
страницы руководства : справка по отдельным командам (20060810)
Бюллетень Linux : Интернет-журнал
Поиск / Ресурсы

Ссылки
Поиск OMF
Объявления / Разное


Обновления документов
Ссылка на HOWTO, которые были недавно обновлены.

Как разработать кириллическую HTML-страницу

Как разработать кириллическую HTML-страницу

Как разработать кириллическую HTML-страницу

На этой странице объясняется, как разработчик может создать файл .html с кириллическим текстом внутри.

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

Символы ASCII (например, знаки препинания и т. Д.) Включают также английского алфавита .
То есть английские буквы являются частью набора символов кириллицы!

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

Другой случай: настоящие многоязычные страницы , где, скажем, русские буквы должны сочетаться с немецкими буквы либо польские, либо японские.
Этот случай описан на другой странице моего сайта — «Как разработать многоязычную страницу HTML»

То есть эта статья — о создании кириллической (например, русской) веб-страницы, т.е.е. Интернет страница, которая объявляется кириллицей (указана кириллица).

Очень другой сценарий : когда вы хотите создать не кириллическую веб-страницу (например, Страница западноевропейской кодировки) и просто поместите туда пару русских слов —
это НЕ рассматривается здесь, это описано в другой статье , одна упомянута выше —
«Как разработать многоязычную страницу HTML»

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


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

Большинство русскоязычных веб-страниц (более 90% наверняка) в настоящее время выполнены в кодировке Windows-1251, также известной как.а. «Кириллица (Windows)», просто потому, что большинство авторов в настоящее время работают под MS Windows, а 1251 — это то, что Microsoft использует для кириллицы, поэтому встроенные в Windows кириллические шрифты и инструменты клавиатуры предназначены для кодирования Windows-1251.
Поэтому гораздо проще набрать текст в кодировке «Кириллица (Windows-1251)» в текстовом редакторе Windows. чем набирать текст в кодировке «Кириллица (KOI8-R)».
Набрать текст в кодировке «Кириллица, ISO-8859-5» под MS Windows практически невозможно.

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

Как написать по-русски с помощью шрифтов и клавиатуры — с индикатором «RU» на панели задач — объясняется в «Введение.Кириллица в Windows » раздел моего сайта «Кириллица (русская): инструкция для Windows и Интернета»

Если кириллица написана правильно, то конечный пользователь сможет прочитать эту страницу, например, переключившись на кириллицу в браузере (например, View / Encoding / Cyrillic (Windows) или Просмотр / Кодирование / Кириллица (KOI8-R) в Internet Explorer) если на странице не указана кодировка.

Примечание. Кириллица в странице НАЗВАНИЕ
Если вы или ваши будущие читатели работаете под нерусской Windows, это , а не хорошая идея использовать кириллические буквы в заголовке вашей страницы
(текст внутри HTML-тегов и).

Например, MS Internet Explorer вер. 5 и выше (а также Netscape версии 7.1 и выше и Mozilla версии 1.4 и выше)
может отображать такой заголовок только под Windows 2000 / XP и не может под Windows 95/98 / ME / NT, а Netscape 4.x — 7.0x вообще не сможет этого сделать.

Вот моя тестовая страница (написана действительно для выпуска закладок в Netscape — это текст заголовка который идет в Закладки) , который объясняет это:
«Заголовок с текстом, отличным от системной кодовой страницы Windows»


Теперь давайте рассмотрим некоторые методы создания текста HTML с русским языком.

1. Редакторы Plain Text — код разработчика HTML вручную

В таком случае все, что нужно сделать разработчику, — это выбрать кириллический шрифт в качестве рабочего шрифта в простом тексте. редактор, которым он пользуется.Переведите клавиатуру в режим «RU» и начните печатать.
Вот и все. Зная, как использовать шрифты и клавиатуру, чтобы писать по-русски, это разработчик просто вводит содержимое HTML-файла — текст и теги.

Я лично использую очень хороший условно-бесплатный текстовый редактор. UltraEdit очень подходит для HTML.
Он использует цвет для тегов HTML, а также позволяет мне создавать собственные макросы. Например, Нажимаю Ctrl / L и сразу в тексте появляется такая конструкция:

 

Все, что мне нужно сделать, чтобы начать писать кириллический HTML, — это выбрать кириллический шрифт, например:
Просмотр / установка шрифта — «Courier New», шрифт — «Cyrillic»

Теперь, переключаясь между «EN» и «RU», я могу писать теги HTML и немного англо-русского контента.

2. WYSIWYG HTML-редактор — создает HTML-текст для вас

Если вы работаете с каким-либо редактором WYSIWYG HTML (который записывает HTML-код / ​​теги будущей веб-страницы для вас молча, «за кадром»), то вы должны узнать, как для создания таких кириллических (+ английских) файлов HTML —
распространенная проблема — когда автор не настраивал редактор для Кириллица перед запуском разработки и, следовательно, HTML-файл создается как файл Western
(charset = windows-1252 или charset = iso-8859-1 или charset = us-ascii)
а не как страница « Кириллица » (ф.е. charset = windows-1251).

Обычно в таком случае нет кириллица буквы в этом HTML-файле — только объекты SGML, такие как & aacute; или некоторые числовые коды, например & # 1076; — вместо букв кириллицы.
В вашем браузере, когда вы делаете View / Source для такой страницы, есть нет читаемого русского текста — явный признак того, что эта кириллическая страница была неправильно написана .

Кроме того, вверху такой некорректно разработанной страницы «Кириллица» можно было увидеть, что он помечен как «Western», потому что в нем есть строка
Как настроить WYSIWYG HTML Editor для создания правильных Cyrillic HTML

Каждый HTML-редактор WYSIWYG требует уникальной настройки для кириллицы, и разработчик должен выяснить это , прежде чем начнет писать код. Некоторые редакторы может вообще не работать с кириллицей …

Ниже приведены инструкции по настройке для некоторых редакторов WYSIWYG HTML.

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

Я лично пробовал шаги настройки кириллицы только для следующих редакторов WYSIWYG HTML:

  • Netscape Composer
  • MS Первая страница 2000
  • MS Word 97 и MS Word 2000 (настройка Word XP , вероятно, такая же, как и для Word 2000)

Есть еще пара редакторов, которые я видел , а не , но нашел шаги по настройке в Интернете:


Вот инструкции по настройке (на примере кодировки кириллицы (Windows-1251)):

  • Передняя страница MS 2000

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

    • Файл / Свойства / Язык
    • В обоих полях раздела «Кодировка HTML» укажите «Кириллица»
      (что на самом деле означает «Кириллица, Windows-1251»)

    Это будет гарантировать, что, когда вы не введете текст, будут представлены кириллические буквы. правильно — как обычные буквы, а не какие-то числовые значения.

    Front Page 2000 вставит следующую строку вверху исходного HTML-кода:
    fontgroup = «Кириллица» winfontcharset = 204
    macfontscript = 7 filename = «iso88595.xml» /> «

  • Теперь вставьте перед строку, указанную выше, следующую строку («приклейте» текст ниже в одну строку ):
    « charset = «windows-1251» fontgroup = «Cyrillic» winfontcharset = 204
    macfontscript = 7 filename = «Win1251.xml «/>»

Примечание. Насколько я слышал, есть проблема с загрузкой в в новой версии Dreamweaver некоторые файлы, которые были , а не , были созданы с использованием вышеуказанного rules и, следовательно, , а не , содержатся внутри строки спецификации кодирования .
То есть Dreamweaver не знает, что это кириллический файл. Так что на кириллице компьютер, скажем, западный, такой файл загружается как файл западной кодировки и теперь он поврежден.
Обходной вариант — (опубликовано В.Зиновьевым в macromedia.dreamweaver Newsgroup) :

  • после загрузки такого файла перейдите в Modify / Page properties / Title / Encoding.
  • выберите там «Cyrillic (Windows)» (или любую другую кодировку, в которой, по вашему мнению, находится этот файл)
  • нажмите «Обновить»

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

Важно! Если вы НЕ вводите русский текст прямо в Dreamwever но вместо этого вы копируете текст, скажем, из MS Word, тогда вы можете столкнуться с проблемой:
вы получите просто набор вопросительных знаков — ??? вместо русского текста в результате копирования / вставки.
В таком случае см. Решения в главе 2 «Копирование / вставка». раздела «Юникод и кириллица» на моем сайте.
Вот прямая ссылка на эту главу:
«Unicode: проблемы копирования / вставки».

  • MS Word 2000 (Word XP , вероятно, работает так же)
    не рекомендуется использовать Word для создания файла HTML, поскольку Word создает для вас HTML-код, содержащий множество ненужных HTML-тегов, файл большой и т. д.
    Но в любом случае вот как это сделать в Word 2000.
    Есть два разных сценария: либо вы создаете новый текст HTML, либо конвертируете существующий.документ в .html.

    1. Создание нового текста HTML

    • Файл / Новый / Веб-страница
    • Сообщите Word сразу, что вы создаете файл HTML Cyrillic
      перейдите в Инструменты / Параметры и:
      • в окне вкладки «Общие» нажмите кнопку «Параметры Интернета».
      • в окне «Параметры Интернета» перейдите на вкладку «Кодировка».
      • выберите «Кириллица (Windows)» в списке «Сохранить этот документ как».
    • Теперь вы можете набирать кириллицу
    • Файл / Сохранить как.Не используйте русский язык в имени файла.
      Нажмите кнопку «Заголовок» в диалоговом окне File / SaveAs, чтобы при необходимости изменить заголовок — , а не — хорошая идея использовать кириллицу в заголовке веб-страницы.

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

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

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

    Вам необходимо проверить исходный HTML-код, созданный для вас редактором WYSIWYG HTML, чтобы убедиться, что вы не совершали типичных ошибок, перечисленных ниже.
    Вы можете проверить исходный HTML-текст с помощью опции View / Source вашего браузера, редактора HTML или открытием.html в текстовом редакторе, который позволяет просматривать простой текст Кириллица — HTML-текст — это простой текст, такой же, как в файле .TXT.

    Ошибка 1. Кириллица в HTML-тексте не содержит обычных букв кириллического алфавита.
    Обычно это происходит, когда автор использует какой-нибудь WYSIWYG HTML-редактор, настроенный для , а не . создание кириллического текста HTML.
    В результате View / Source будет показывать на странице следующее вместо кириллицы буквы:

    • Субъекты SGML, такие как & aacute;
      или же
    • числовых кодов (значений Unicode), например & # 1076;

    Ошибка 2. Страница объявляется как «западноевропейская», а не как «кириллица».
    То есть кодировка (кодировка) для этой страницы не является кириллицей. (например, windows-1251 ), но «Western» — iso-8859-1 или windows-1252 или us-ascii .

    Значение набора символов (кодировки) может быть установлено либо в заголовке HTTP, отправленном веб-сервером. в браузер вместе с самой страницей или в «теле» HTML-текста этой страницы, в его части заголовка, например

    Примечание. Создание страницы

    КОИ8-Р .

    Хотя в настоящее время большинство русскоязычных веб-страниц имеют кодировку кириллицы (Windows-1251), одна мог разработать русскую страницу в кодировке кириллицы ( KOI8-R ).

    Как было объяснено в разделе «Кириллические шрифты и кодировки» раздел моего сайта «Кириллица (русская): инструкции для Windows и Интернета»,

    современные приложения, такие как Netscape 4 + / Mozilla, Internet Explorer, Front Page 2000 и т. д.позволяют пользователю работать с родным для MS Windows набором шрифтов и клавиатурных инструментов — кодирования «Кириллица (Windows-1251)» и обработать KOI8-R автоматически , без KOI8-R шрифты и инструменты клавиатуры.

    Для разработчика кириллической HTML-страницы это означает следующее:

    • Разработчик вводит текст будущей страницы KOI8-R, используя шрифты Windows-1251, такие как «Arial (Cyrillic)» и инструменты клавиатуры Windows-1251 («RU» на панели задач), так что то, что он / она действительно имеет в окне редактора, — это текст Windows-1251 (или Unicode), а не текст KOI8-R
    • Но если в качестве кодировки для этого HTML-файла был указан KOI8-R, то современные Редакторы WYSIWYG HTML незаметно «за кадром» конвертируют текста из Windows-1251 — KOI8-R и поместите текст KOI8-R на жесткий диск в формате.HTML
      Они также поместят следующую строку вверху HTML-текста:
      PostgreSQL: Документация: 9.3: Поддержка набора символов

      Поддержка набора символов в PostgreSQL позволяет хранить текст в множество наборов символов (также называемых кодировками), включая однобайтовые наборы символов, такие как серия ISO 8859 и многобайтовые наборы символов, такие как EUC (Extended Unix Code), UTF-8 и Mule внутренний код. Можно использовать все поддерживаемые наборы символов. прозрачно для клиентов, но некоторые из них не поддерживаются для использования внутри сервера (то есть как кодирование на стороне сервера). По умолчанию набор символов выбирается при инициализации кластера базы данных PostgreSQL с помощью initdb.Его можно переопределить при создании база данных, поэтому у вас может быть несколько баз данных с разными набор символов.

      Однако важным ограничением является то, что каждая база данных набор символов должен быть совместим с параметрами локали базы данных LC_CTYPE (классификация символов) и LC_COLLATE (порядок сортировки строк). Для C или POSIX языковой стандарт, разрешен любой набор символов, но для других языков есть это только один набор символов, который будет работать правильно. (В Windows однако кодировку UTF-8 можно использовать с любой локалью.)

      Таблица 22-1 показывает наборы символов, доступные для использования в PostgreSQL.

      Таблица 22-1. PostgreSQL Наборы символов

      Имя Описание Язык Сервер? Байт / символ Псевдонимы
      BIG5 Большая пятерка Традиционный китайский Нет 1-2 WIN950, Windows950
      EUC_CN Расширенный код UNIX — CN Упрощенный китайский Есть 1-3
      EUC_JP Расширенный код UNIX-JP Японский Есть 1-3
      EUC_JIS_2004 Расширенный код UNIX-JP, JIS X 0213 Японский Есть 1-3
      EUC_KR Расширенный код UNIX-KR Корейский Есть 1-3
      EUC_TW Расширенный код UNIX-TW Традиционный китайский, Тайваньский Есть 1-3
      ГБ18030 Национальный стандарт Китайский Нет 1–4
      ГБК Расширенный национальный стандарт Упрощенный китайский Нет 1-2 WIN936, Windows936
      ISO_8859_5 ISO 8859-5, ECMA 113 Латиница / кириллица Есть 1
      ISO_8859_6 ISO 8859-6, ECMA 114 Латинский / арабский Есть 1
      ISO_8859_7 ISO 8859-7, ECMA 118 Латинский / греческий Есть 1
      ISO_8859_8 ISO 8859-8, ECMA 121 Латиница / Иврит Есть 1
      JOHAB JOHAB Корейский (хангыль) Нет 1-3
      КОИ8Р КОИ8-Р Кириллица (русская) Есть 1 КОИ8
      КОИ8У КОИ8-У Кириллица (украинская) Есть 1
      ЛАТИН 1 ISO 8859-1, ECMA 94 Западноевропейская Есть 1 ISO88591
      ЛАТИН 2 ISO 8859-2, ECMA 94 Центральноевропейская Есть 1 ISO88592
      ЛАТИН 3 ISO 8859-3, ECMA 94 Южноевропейский Есть 1 ISO88593
      ЛАТИН 4 ISO 8859-4, ECMA 94 Северо-Европейский Есть 1 ISO88594
      LATIN5 ISO 8859-9, ECMA 128 Турецкий Есть 1 ISO88599
      LATIN6 ISO 8859-10, ECMA 144 Скандинавский Есть 1 ISO885910
      LATIN7 ISO 8859-13 Балтика Есть 1 ISO885913
      ЛАТИН 8 ISO 8859-14 Кельтский Есть 1 ISO885914
      ЛАТИН 9 ISO 8859-15 LATIN1 с евро и акцентами Есть 1 ISO885915
      ЛАТИН 10 ISO 8859-16, ASRO SR 14111 Румынский Есть 1 ISO885916
      MULE_INTERNAL Мул внутренний код Многоязычный Emacs Есть 1–4
      SJIS Сдвиг JIS Японский Нет 1-2 Мсканджи, ShiftJIS, WIN932, Окна932
      SHIFT_JIS_2004 Сдвиг JIS, JIS X 0213 Японский Нет 1-2
      SQL_ASCII не указано (см. Текст) любая Есть 1
      UHC Единый код хангыль Корейский Нет 1-2 WIN949, Windows949
      UTF8 Unicode, 8 бит все Есть 1–4 Юникод
      WIN866 Окна CP866 Кириллица Есть 1 ALT
      WIN874 Окна CP874 Тайский Есть 1
      WIN1250 Окна CP1250 Центральноевропейская Есть 1
      WIN1251 Окна CP1251 Кириллица Есть 1 ВЫИГРАТЬ
      WIN1252 Окна CP1252 Западноевропейская Есть 1
      WIN1253 Окна CP1253 Греческий Есть 1
      WIN1254 Окна CP1254 Турецкий Есть 1
      WIN1255 Окна CP1255 Еврейский Есть 1
      WIN1256 Окна CP1256 Арабский Есть 1
      WIN1257 Окна CP1257 Балтика Есть 1
      WIN1258 Окна CP1258 Вьетнамский Есть 1 ABC, TCVN, TCVN5712, VSCII

      Не все клиентские API поддерживают все перечисленные наборы символов.Например, драйвер PostgreSQL JDBC не поддерживает MULE_INTERNAL, LATIN6, LATIN8 и ЛАТИНСКИЙ 10.

      Параметр SQL_ASCII ведет себя значительно отличается от других настроек. Когда сервер набор символов — SQL_ASCII, сервер интерпретирует байтовые значения 0-127 в соответствии со стандартом ASCII, а байтовые значения 128–255 считаются неинтерпретируемыми символами. Нет преобразование кодировки будет выполнено, если установлено значение SQL_ASCII. Таким образом, этот параметр не так уж и хорош. объявление, что используется определенная кодировка, как объявление незнание кодировки.В большинстве случаев, если вы работаете с любыми данными, отличными от ASCII, неразумно использовать параметр SQL_ASCII, потому что PostgreSQL не сможет вам помочь преобразование или проверка символов, отличных от ASCII.

      initdb определяет символ по умолчанию установить (кодировку) для PostgreSQL кластер. Например,

       initdb -E EUC_JP 

      устанавливает набор символов по умолчанию на EUC_JP (расширенный код Unix для японского языка). Ты можешь используйте —encoding вместо -E, если вы предпочитаете более длинные строки параметров. Если нет -E или —encoding задана опция, initdb пытается определить подходящую кодировку для использования на основе указанного или языковой стандарт по умолчанию.

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

      createdb -E EUC_KR -T template0 --lc-collate = ko_KR.euckr --lc-ctype = ko_KR.euckr корейский 

      Это создаст базу данных с именем korean, которая использует набор символов EUC_KR и локаль ko_KR. Другой способ добиться этого — использовать эту команду SQL:

      СОЗДАТЬ БАЗУ ДАННЫХ корейский С КОДИРОВАНИЕМ 'EUC_KR' LC_COLLATE = 'ko_KR.euckr' LC_CTYPE = 'ko_KR.euckr 'TEMPLATE = template0; 

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

      Кодировка для базы данных хранится в системном каталоге. pg_database. Вы можете увидеть это, используя параметр psql -l или команда \ l.

       $  psql -l 
                                               Список баз данных
         Имя | Владелец | Кодирование | Сортировка | Ctype | Привилегии доступа
      ----------- + ---------- + ----------- + ------------- + - ------------ + -------------------------------------
       clocaledb | хлиннака | SQL_ASCII | C | C |
       englishdb | хлиннака | UTF8 | en_GB.UTF8 | en_GB.UTF8 |
       японский | хлиннака | UTF8 | ja_JP.UTF8 | ja_JP.UTF8 |
       корейский | хлиннака | EUC_KR | ko_KR.euckr | ko_KR.euckr |
       postgres | хлиннака | UTF8 | fi_FI.UTF8 | fi_FI.UTF8 |
       template0 | хлиннака | UTF8 | fi_FI.UTF8 | fi_FI.UTF8 | {= c / hlinnaka, hlinnaka = CTc / hlinnaka}
       template1 | хлиннака | UTF8 | fi_FI.UTF8 | fi_FI.UTF8 | {= c / hlinnaka, hlinnaka = CTc / hlinnaka}
      (7 рядов) 

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

      PostgreSQL позволит суперпользователи для создания баз данных с кодировкой SQL_ASCII, даже если LC_CTYPE не C или POSIX. Как отмечалось выше, SQL_ASCII не требует, чтобы данные, хранящиеся в база данных имеет какую-либо конкретную кодировку, поэтому этот выбор ставит риски ненадлежащего поведения, зависящего от местных условий.Используя эту комбинацию настройки устарели и когда-нибудь могут быть полностью запрещены.

      PostgreSQL поддерживает автоматический преобразование набора символов между сервером и клиентом наверняка комбинации наборов символов. Информация о преобразовании хранится в системный каталог pg_conversion. PostgreSQL поставляется с некоторыми предопределенные преобразования, как показано в Таблице 22-2. Ты может создать новое преобразование с помощью команды SQL CREATE CONVERSION.

      Таблица 22-2. Преобразование набора символов клиент / сервер

      Серверный набор символов Доступные клиентские наборы символов
      BIG5 не поддерживается в качестве сервера кодировка
      EUC_CN EUC_CN, MULE_INTERNAL, UTF8
      EUC_JP EUC_JP, MULE_INTERNAL, SJIS, UTF8
      EUC_JIS_2004 EUC_JIS_2004, SHIFT_JIS_2004, UTF8
      EUC_KR EUC_KR, MULE_INTERNAL, UTF8
      EUC_TW EUC_TW, BIG5, MULE_INTERNAL, UTF8
      ГБ18030 не поддерживается в качестве сервера кодировка
      ГБК не поддерживается в качестве сервера кодировка
      ISO_8859_5 ISO_8859_5, KOI8R, MULE_INTERNAL, UTF8, WIN866, WIN1251
      ISO_8859_6 ISO_8859_6, UTF8
      ISO_8859_7 ISO_8859_7, UTF8
      ISO_8859_8 ISO_8859_8, UTF8
      JOHAB не поддерживается в качестве сервера кодировка
      КОИ8Р KOI8R, ISO_8859_5, MULE_INTERNAL, UTF8, WIN866, WIN1251
      КОИ8У КОИ8У, UTF8
      ЛАТИН 1 LATIN1, MULE_INTERNAL, UTF8
      ЛАТИН 2 LATIN2, MULE_INTERNAL, UTF8, WIN1250
      ЛАТИН 3 LATIN3, MULE_INTERNAL, UTF8
      ЛАТИН 4 LATIN4, MULE_INTERNAL, UTF8
      LATIN5 LATIN5, UTF8
      LATIN6 LATIN6, UTF8
      LATIN7 LATIN7, UTF8
      ЛАТИН 8 LATIN8, UTF8
      ЛАТИН 9 LATIN9, UTF8
      ЛАТИН 10 LATIN10, UTF8
      MULE_INTERNAL MULE_INTERNAL, BIG5, EUC_CN, EUC_JP, EUC_KR, EUC_TW, ISO_8859_5, KOI8R, LATIN1 в LATIN4, SJIS, WIN866, WIN1250, WIN1251
      SJIS не поддерживается в качестве сервера кодировка
      SHIFT_JIS_2004 не поддерживается в качестве сервера кодировка
      SQL_ASCII любые (конвертации не будет выполнено)
      UHC не поддерживается в качестве сервера кодировка
      UTF8 все поддерживаются кодировки
      WIN866 WIN866, ISO_8859_5, KOI8R, MULE_INTERNAL, UTF8, WIN1251
      WIN874 WIN874, UTF8
      WIN1250 WIN1250, LATIN2, MULE_INTERNAL, UTF8
      WIN1251 WIN1251, ISO_8859_5, KOI8R, MULE_INTERNAL, UTF8, WIN866
      WIN1252 WIN1252, UTF8
      WIN1253 WIN1253, UTF8
      WIN1254 WIN1254, UTF8
      WIN1255 WIN1255, UTF8
      WIN1256 WIN1256, UTF8
      WIN1257 WIN1257, UTF8
      WIN1258 WIN1258, UTF8

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

      • Использование команды \ encoding в psql. \ encoding позволяет изменять кодировку клиента на муха. Например, чтобы изменить кодировку на SJIS, введите:

        .
         \ кодировка SJIS 
      • libpq (Раздел 31.10) имеет функции для управления клиентская кодировка.

      • Использование SET client_encoding TO. Параметр кодирование клиента может быть выполнено с помощью этой команды SQL:

         SET CLIENT_ENCODING TO 'значение'; 

        Также вы можете использовать стандартный синтаксис SQL SET ИМЕНА для этого:

         УСТАНОВИТЬ ИМЕНА 'значение'; 

        Для запроса текущей клиентской кодировки:

         ПОКАЗАТЬ client_encoding; 

        Для возврата к кодировке по умолчанию:

         СБРОС client_encoding; 
      • Использование PGCLIENTENCODING.Если переменная среды PGCLIENTENCODING равна определена в клиентской среде, эта клиентская кодировка автоматически выбирается при подключении к серверу. (Впоследствии это можно изменить, используя любой из других методов. упомянуто выше.)

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

      Если преобразование определенного символа невозможно — предположим, вы выбрали EUC_JP для сервера и LATIN1 для клиента, а некоторые Возвращаются японские символы, которые не имеют представления в LATIN1 — сообщается об ошибке.

      Если набор символов клиента определен как SQL_ASCII, преобразование кодировки отключено, независимо от набора символов сервера. Как и в случае с сервером, использование SQL_ASCII неразумно, если вы не работа с данными в формате ASCII.

      Это хорошие источники для начала изучения различных видов системы кодирования.

      CJKV Обработка информации: китайский, Вычислительная техника в Японии, Корее и Вьетнаме

      Содержит подробные объяснения EUC_JP, EUC_CN, EUC_KR, EUC_TW.

      http://www.unicode.org/

      Веб-сайт Консорциума Unicode.

      RFC 3629

      UTF-8 (8-битный UCS / Unicode Формат преобразования) определяется здесь.

      Руководство пользователя

      Глава 6: Поддержка Unicode и не-ASCII

      Глава 6. Поддержка Unicode и не-ASCII

      6.1 Формат для печати в кавычках
      6.2 Символы, отличные от ASCII в заголовках
      6.3 Unicode и UTF-8
      6.4 Поддержка UTF-8 в AspEmail
      6.5 Допустимые значения CharSet

      6.1 Формат цитируемой печати

      AspEmail может отправлять сообщения в алфавитах, отличных от US-ASCII. за счет поддержки формата «Цитата для печати».Этот формат описан в RFC-2045. Идея формата заключается в том, что символы с кодами меньше 33 и больше чем 126 представлены знаком «=», за которым следует двузначное шестнадцатеричное представление. ценности персонажа. Например, десятичное значение 12 (подача формы US-ASCII) представлен как = 0C , а десятичное значение 61 (US-ASCII «=») может быть представлено как = 3D .

      AspEmail кодирует тело сообщения в формате Quoted-Printable автоматически, если для свойства ContentTransferEncoding установлено значение строка «Quoted-Printable» (регистр букв не имеет значения).Вы также можете установить свойство Charset к соответствующему набору символов. Следующий фрагмент кода отправляет сообщение на русском языке:

      <% @ codepage = 1251%>

      <%

      Mail.Charset = «Windows-1251»
      Mail.Body = «-«.
      Mail.ContentTransferEncoding = «Quoted-Printable»
      %>

      Директива <% @ codepage = 1251%> предписывает интерпретатор ASP для обработки жестко запрограммированных символов в сценарии в виде русских символов (1251 — русская кодовая страница).Как результат, Body свойство получит русскую строку Unicode.

      6.2 Символы не-ASCII в заголовках

      Если вы хотите отправить сообщение с определенными заголовками, например Тема: , To: или From: , содержащие символы, отличные от US-ASCII, вы должны использовать метод Mail.EncodeHeader для кодирования строки символов в соответствии с RFC 1522.Метод принимает один обязательный параметр, строку заголовка, и один необязательный параметр, набор символов, который по умолчанию — « ISO-8859-1 ». Например:

      <% @ codepage = 1251%>

      <%
      Mail.Subject = Mail.EncodeHeader («-«, «Windows-1251»)
      Mail.FromName = Mail.EncodeHeader («», «Windows-1251»)
      Mail.AddAddress «[email protected]», Mail.EncodeHeader («»)
      %>

      6.3 Юникод и UTF-8

      Из MSDN: «Юникод — это 16-битный стандарт кодировки символов фиксированной ширины, который охватывает практически все символы, обычно используемые на компьютерах сегодня. Это включает в себя большинство письменных языков мира, а также издательские персонажи, математические и технические символы и знаки препинания «.

      С Unicode.org: «Компьютеры … хранят буквы и другие символы присвоение номера каждому.До изобретения Unicode существовало сотни различных систем кодирования для присвоения этих чисел. Ни одна кодировка не может содержать достаточно символов … Unicode предоставляет уникальный номер для каждого символа, независимо от того, какая платформа, какая программа, на каком языке ».

      Например, основная латинская буква «А» имеет шестнадцатеричный код 0041 (65), русский буква имеет код Hex 0416 (1046), а китайский иероглиф имеет код Hex 32A5 (12965).

      UTF-8 (формат преобразования Unicode, 8-битная форма кодирования) рекомендуется формат, который будет использоваться для отправки данных на основе Unicode по сетям, в частности, через Интернет. UTF-8 представляет значение Unicode как последовательность из 1, 2 или 3 байтов.

      Символы Юникода в диапазоне от 0000 до 007F кодируются просто как байты. 00 до 7F. Это означает, что файлы и строки, содержащие только 7-битный ASCII символы имеют одинаковую кодировку как в ASCII, так и в UTF-8.Следовательно, Unicode 0041 («A») в UTF-8 — это Hex 41.

      Символы Юникода в диапазоне от 0080 до 07FF кодируются как последовательность из двух байтов. Например, Unicode 0416 () кодируется как Hex D0 96. Кодируются символы Unicode в диапазоне от Hex 0800 до FFFF. как последовательность из трех байтов. Например, Unicode 32A5 () кодируется как Hex E3 8A A5.

      6.4 Поддержка UTF-8 в AspEmail

      AspEmail 5.0 предлагает полную поддержку UTF-8 как в теле сообщения, так и в заголовках. Чтобы отправить сообщение в кодировке UTF-8, вы должны установить CharSet свойство к строке « UTF-8 » (регистр не имеет значения), и ContentTransferEncoding на « Quoted-Printable ». Вы также должны передать UTF-8 в качестве второго аргумента EncodeHeader .

      В следующем примере кода демонстрируется использование UTF-8:






      <%
      ‘изменить на адрес вашего собственного SMTP-сервера
      strHost = «smtp.myisp.net «

      ‘Включить UTF-8 -> Перевод Unicode для элементов формы
      Session.CodePage = 65001 ‘Код UTF-8

      Если Запрос («Отправить») «» То
      Установите Mail = Server.CreateObject («Persits.MailSender»)
      ‘введите действительный SMTP-хост
      Mail.Host = strHost

      Mail.From = «[email protected]» ‘с адреса
      Mail.FromName = Mail.EncodeHeader (Запрос («FromName»), «utf-8»)
      Почта.AddAddress Request («Кому»)

      ‘тема сообщения
      Mail.Subject = Mail.EncodeHeader (Запрос («Тема»), «utf-8»)

      ‘тело сообщения
      Mail.Body = Request («Body»)

      ‘Параметры UTF-8
      Mail.CharSet = «UTF-8»
      Mail.ContentTransferEncoding = «Quoted-Printable»
      Mail.Send ‘отправить сообщение
      Response.Write «Сообщение отправлено» & Request («To»)
      Конец, если
      %>




      AspEmail: Unicode.asp

      <ТЕЛО>


      <ТАБЛИЦА ЯЧЕЙКИ = 0 ЯЧЕЙКА = 0>
      Введите адрес электронной почты:
      Введите свое имя:
      Введите тему:
      Введите текст:




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

      Этот тег META определяет набор символов для этой страницы как UTF-8.Это, помимо прочего, указывает браузеру кодировать все элементы формы в кодировке UTF8. когда форма отправлена.

      Session.CodePage = 65001

      Эта строка указывает нашему сценарию ASP преобразовывать элементы формы в кодировке UTF8. (возвращается коллекцией Request.Form) обратно к обычным строкам Unicode. Номер 65001 — это кодовая страница UTF-8.

      Mail.Subject = Mail.EncodeHeader (Запрос («Тема»), «utf-8»)

      Второй необязательный аргумент установлен в «UTF-8» для правильного кодирования заголовка.

      Mail.CharSet = «UTF-8»
      Mail.ContentTransferEncoding = «Quoted-Printable»

      Эти две строки обеспечивают правильную кодировку UTF-8 тела сообщения.

      Щелкните ссылки ниже, чтобы запустить этот пример кода:

      http: //localhost/aspemail/NonAscii/Unicode.asp
      http: //localhost/aspemail/NonAscii/Unicode.aspx

      6.5 допустимых значений CharSet

      Вы можете указать следующие строковые значения для свойства CharSet , а также второй необязательный аргумент метода EncodeHeader :
      Значение Значение
      «УТФ-8» UTF-8
      «УТФ-7» UTF-7
      «Окна-1250»
      «cp1250»
      ANSI — Центральная Европа
      «Окна-1251»
      «cp1251»
      ANSI — кириллица
      «Windows-1252»
      «cp1252»
      «ascii»
      «us-ascii»
      Латиница I
      «Окна-1253»
      «cp1253»
      ANSI — греческий
      «Окна-1254»
      «cp1254»
      ANSI — турецкий
      «Окна-1255»
      «cp1255»
      ANSI — иврит
      «Окна-1256»
      «cp1256»
      ANSI — арабский
      «Окна-1257»
      «cp1257»
      ANSI — Балтика
      «Окна-1258»
      «cp1258»
      ANSI — вьетнамский
      «ISO-8859-1» Latin I (значение по умолчанию)
      «ИСО-8859-2» Центральная Европа
      «ИСО-8859-3» Латиница 3
      «ISO-8859-4» Балтика
      «ISO-8859-5» Кириллица
      «ISO-8859-6» Арабский
      «ISO-8859-7» Греческий
      «ISO-8859-8» Еврейский
      «ИСО-8859-9» Латиница 5
      «ИСО-8859-15» Латиница 9
      «cp866» Русский DOS
      «КОИ8-Р» Русский
      «КОИ8-У» Украинский
      «shift_jis» Японская Windows
      «ks_c_5601-1987»
      «корейский»
      Корейский
      «EUC-KR»
      «корейский»
      EUC — корейский
      «БОЛЬШОЙ5» Традиционный китайский Windows
      «GB2312»
      «китайский»
      Китайский упрощенный
      «HZ-GB-2312» Упрощенный китайский HZ
      «EUC-JP» EUC — Японский
      «X-EUC-TW» EUC — традиционный китайский

      .