Содержание

Кодировка текста 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

Использую для заработка

Как исправить отображение кириллицы в Windows 10

Реклама

&nbsp windows

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

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

Исправление отображения кириллицы с помощью настроек языка и региональных стандартов Windows 10

Самый простой и чаще всего работающий способ убрать кракозябры и вернуть русские буквы в Windows 10 — исправить некоторые неправильные настройки в параметрах системы.

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

  1. Откройте панель управления (для этого можно начать набирать «Панель управления» или «Control Panel» в поиске на панели задач.
  2. Убедитесь, что в поле «Просмотр» (View by) установлено «Значки» (Icons) и выберите пункт «Региональные стандарты» (Region). 
  3. На вкладке «Дополнительно» (Administrative) в разделе «Язык программ, не поддерживающих Юникод» (Language for non-Unicode programs) нажмите по кнопке «Изменить язык системы» (Change system locale). 
  4. Выберите русский язык, нажмите «Ок» и подтвердите перезагрузку компьютера. 

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

Как исправить иероглифы Windows 10 путем изменения кодовых страниц

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

С помощью редактора реестра

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

  1. Нажмите клавиши Win+R на клавиатуре, введите regedit и нажмите Enter, откроется редактор реестра.
  2. Перейдите к разделу реестра
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
    и в правой части пролистайте значения этого раздела до конца. 
  3. Дважды нажмите по параметру ACP, установите значение 1251 (кодовая страница для кириллицы), нажмите Ок и закройте редактор реестра. 
  4. Перезагрузите компьютер (именно перезагрузка, а не завершение работы и включение, в Windows 10 это может иметь значение).

Обычно, это исправляет проблему с отображением русских букв. Вариация способа с помощью редактора реестра (но менее предпочтительная) — посмотреть на текущее значение параметра ACP (обычно — 1252 для изначально англоязычных систем), затем в том же разделе реестра найти параметр с именем 1252 и изменить его значение с c_1252.nls на c_1251.nls.

Путем подмена файла кодовой страницы на c_1251.nls

Второй, не рекомендуемый мной способ, но иногда выбираемый теми, кто считает, что правка реестра — это слишком сложно или опасно: подмена файла кодовой страницы в C:\ Windows\ System32 (предполагается, что у вас установлена западно-европейская кодовая страница — 1252, обычно это так. Посмотреть текущую кодовую страницу можно в параметре ACP в реестре, как было описано в предыдущем способе).

  1. Зайдите в папку C:\ Windows\ System32 и найдите файл c_1252.NLS, нажмите по нему правой кнопкой мыши, выберите пункт «Свойства» и откройте вкладку «Безопасность». На ней нажмите кнопку «Дополнительно». 
  2. В поле «Владелец» нажмите «Изменить». 
  3. В поле «Введите имена выбираемых объектов» укажите ваше имя пользователя (с правами администратора). Если в Windows 10 используется учетная запись Майкрософт, вместо имени пользователя укажите адрес электронной почты. Нажмите «Ок» в окне, где указывали пользователя и в следующем (Дополнительные параметры безопасности) окне. 
  4. Вы снова окажетесь на вкладке «Безопасность» в свойствах файла. Нажмите кнопку «Изменить».
  5. Выберите пункт «Администраторы» (Administrators) и включите полный доступ для них. Нажмите «Ок» и подтвердите изменение разрешений. Нажмите «Ок» в окне свойств файла. 
  6. Переименуйте файл c_1252.NLS (например, измените расширение на .bak, чтобы не потерять этот файл).
  7. Удерживая клавишу Ctrl, перетащите находящийся там же в C:\Windows\System32 файл c_1251.NLS (кодовая страница для кириллицы) в другое место этого же окна проводника, чтобы создать копию файла. 
  8. Переименуйте копию файла c_1251.NLS в c_1252.NLS.
  9. Перезагрузите компьютер.

После перезагрузки Windows 10 кириллица должна будет отображаться не в виде иероглифов, а как обычные русские буквы.

А вдруг и это будет интересно:

полезная информация и краткая ретроспектива

  • Главная
  • ->
  • Материалы
  • ->
  • Кодировки: полезная информация и краткая ретроспектива

Reg.ru: домены и хостинг

Крупнейший регистратор и хостинг-провайдер в России.

Более 2 миллионов доменных имен на обслуживании.

Продвижение, почта для домена, решения для бизнеса.

Более 700 тыс. клиентов по всему миру уже сделали свой выбор.

Перейти на сайт->

Бесплатный Курс «Практика HTML5 и CSS3»

Освойте бесплатно пошаговый видеокурс

по основам адаптивной верстки

на HTML5 и CSS3 с полного нуля.

Начать->

Фреймворк Bootstrap: быстрая адаптивная вёрстка

Пошаговый видеокурс по основам адаптивной верстки в фреймворке Bootstrap.

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

Верстайте на заказ и получайте деньги.

Получить в подарок->

Бесплатный курс «Сайт на WordPress»

Хотите освоить CMS WordPress?

Получите уроки по дизайну и верстке сайта на WordPress.

Научитесь работать с темами и нарезать макет.

Бесплатный видеокурс по рисованию дизайна сайта, его верстке и установке на CMS WordPress!

Получить в подарок->

*Наведите курсор мыши для приостановки прокрутки.

Назад Вперед


Кодировки: полезная информация и краткая ретроспектива

Данную статью я решил написать как небольшой обзор, касающийся вопроса кодировок.

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

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

Итак, поехали…

Что такое кодировка?

Упрощенно говоря, кодировка — это таблица сопоставлений символов, которые мы можем видеть на экране, определенным числовым кодам.

Т.е. каждый символ, который мы вводим с клавиатуры, либо видим на экране монитора, закодирован определенной последовательностью битов (нулей и единиц). 8 бит, как вы, наверное, знаете, равны 1 байту информации, но об этом чуть позже.

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

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

Эта аббревиатура расшифровывается как American Standard Code for Information Interchange (американская стандартная кодировочная таблица для печатных символов и некоторых специальных кодов).

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

Позже она была расширена (изначально она не использовала все 8 бит), поэтому появилась возможность использовать уже не 128, а 256 (2 в 8 степени) различных символов, которые можно закодировать в одном байте информации.

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

Вариантов расширенной кодировки ASCII существует очень много по причине того, что языков в мире тоже немало. Думаю, что многие из вас слышали о такой кодировке, как KOI8-R — это тоже расширенная кодировка ASCII, предназначенная для работы с символами русского языка.

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

По сути это были те же расширенные версии ASCII, однако из них были удалены различные псевдографические элементы и добавлены символы типографики, для которых ранее не хватало «свободных мест».

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

ANSI-кодировка — это собирательное название. В действительности, реальная кодировка при использовании ANSI будет определяться тем, что указано в реестре вашей операционной системы Windows. В случае с русским языком это будет Windows-1251, однако, для других языков это будет другая разновидность ANSI.

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

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

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

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

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

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

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

Сам стандарт был предложен в 1991 году некоммерческой организацией «Консорциум Юникода» (Unicode Consortium, Unicode Inc.), и первым результатом его работы стало создание кодировки UTF-32.

Кстати, сама аббревиатура UTF расшифровывается как Unicode Transformation Format (Формат Преобразования Юникод).

В этой кодировке для кодирования одного символа предполагалось использовать аж 32 бита, т.е. 4 байта информации. Если сравнивать это число с однобайтовыми кодировками, то мы придем к простому выводу: для кодирования 1 символа в этой универсальной кодировке нужно в 4 раза больше битов, что «утяжеляет» файл в 4 раза.

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

На смену ей пришла новая разработка — UTF-16.

Как очевидно из названия, в этой кодировке один символ кодируют уже не 32 бита, а только 16 (т.е. 2 байта). Очевидно, это делает любой символ вдвое «легче», чем в UTF-32, однако и вдвое «тяжелее» любого символа, закодированного с помощью однобайтовой кодировки.

Количество символов, доступное для кодирования в UTF-16 равно, как минимум, 2 в 16 степени, т.е. 65536 символов. Вроде бы все неплохо, к тому же окончательная величина кодового пространства в UTF-16 была расширена до более, чем 1 миллиона символов.

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

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

UTF-8 — это многобайтовая кодировка с переменной длинной символа. Глядя на название, можно по аналогии с UTF-32 и UTF-16 подумать, что здесь для кодирования одного символа используется 8 бит, однако это не так. Точнее, не совсем так.

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

В UTF-8 все латинские символы кодируются 8 битами, как и в кодировке ASCII. Иными словами, базовая часть кодировки ASCII (128 символов) перешла в UTF-8, что позволяет «тратить» на их представление всего 1 байт, сохраняя при этом универсальность кодировки, ради которой все и затевалось.

Итак, если первые 128 символов кодируются 1 байтом, то все остальные символы кодируются уже 2 байтами и более. В частности, каждый символ кириллицы кодируется именно 2 байтами.

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

C BOM или без BOM?

Если вы работали с текстовыми редакторами (редакторами кода), например Notepad++, phpDesigner, rapid PHP и т.д., то, вероятно, обращали внимание на то, что при задании кодировки, в которой будет создана страница, можно выбрать, как правило, 3 варианта:

— ANSI
— UTF-8
— UTF-8 без BOM

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

Итак, что же такое BOM и почему нам это не нужно?

BOM расшифровывается как Byte Order Mark. Это специальный Unicode-символ, используемый для индикации порядка байтов текстового файла. По спецификации его использование не является обязательным, однако если BOM используется, то он должен быть установлен в начале текстового файла.

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

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

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

Обратите внимание, что запись «ANSI as UTF-8» в редакторе Notepad++ означает то же самое, что и «UTF-8 без BOM». Это одно и то же.



В программе phpDesigner нельзя сразу точно сказать, используется BOM, или нет. Для этого нужно кликнуть правой кнопкой мыши по надписи «UTF-8», после чего во всплывающем окне можно увидеть, используется ли BOM (опция Save with BOM).


В редакторе rapid PHP кодировка UTF-8 без BOM обозначается как «UTF-8*».

Как вы понимаете, в разных редакторах все выглядит немного по-разному, однако главную идею вы поняли.

После того, как документ сохранен в UTF-8 без BOM, нужно также убедиться, что верная кодировка указана в специальном метатэге в секции head вашего html-документа:



<meta charset = "utf-8" />


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

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

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

Дмитрий Науменко.

P.S. Присмотритесь к премиум-урокам по различным аспектам сайтостроения, а также к бесплатному курсу по созданию своей CMS-системы на PHP с нуля. Все это поможет вам быстрее и проще освоить различные технологии веб-разработки.

Понравился материал и хотите отблагодарить?
Просто поделитесь с друзьями и коллегами!


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

Наверх

Онлайн калькулятор: Кодировка файла

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

Скачать текст как файл с выбором кодировки
КодировкаAtari STCP 856 HebrewDOS Arabic (CP864)DOS Baltic Rim (CP775)DOS Cyrillic (CP855)DOS Cyrillic Russian (CP866)DOS French Canada (CP863)DOS Greek (CP737)DOS Greek 2 (CP869)DOS Hebrew (CP862)DOS Icelandic (CP861)DOS Latin 1 (CP850)DOS Latin 2 (CP852)DOS Latin US (CP437)DOS Nordic (CP865)DOS Portuguese (CP860)DOS Turkish (CP857)EBCDIC 037 USA/CanadaEBCDIC 1026 TurkishEBCDIC 424 HebrewEBCDIC 500 InternationalEBCDIC 875 GreekGSM 03.38ISO 8-bit Urdu (IBM CP1006)ISO 8859-2 (Latin-2)ISO 8859-5ISO 8859-6ISO 8859-7ISO-IR-68ISO/IEC 8859-1 (Latin-1)ISO/IEC 8859-10 (Latin-6)ISO/IEC 8859-11 ISO/IEC 8859-13 (Latin-7)ISO/IEC 8859-14ISO/IEC 8859-15 (Latin-9)ISO/IEC 8859-16 (Latin-10)ISO/IEC 8859-3ISO/IEC 8859-4 (Latin-4)ISO/IEC 8859-8ISO/IEC 8859-9KOI8-RKOI8-UKPS 9566KZ-1048 Mac OS CelticMac OS Central EuropeanMac OS CroatianMac OS CyrillicMac OS DingbatsMac OS GaelicMac OS GreekMac OS IcelandicMac OS InuitMac OS RomanMac OS RomanianMac OS TurkishUTF-8Windows-1250Windows-1251Windows-1252Windows-1253Windows-1254Windows-1255Windows-1256Windows-1257Windows-1258Windows-874Windows-932Windows-936Windows-949Windows-950Чу, я слышу пушек гром!

Входной текст

Шестнадцатеричный дамп

 

content_copy Ссылка save Сохранить extension Виджет

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

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

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

Входной текст

КодировкаAtari STCP 856 HebrewDOS Arabic (CP864)DOS Baltic Rim (CP775)DOS Cyrillic (CP855)DOS Cyrillic Russian (CP866)DOS French Canada (CP863)DOS Greek (CP737)DOS Greek 2 (CP869)DOS Hebrew (CP862)DOS Icelandic (CP861)DOS Latin 1 (CP850)DOS Latin 2 (CP852)DOS Latin US (CP437)DOS Nordic (CP865)DOS Portuguese (CP860)DOS Turkish (CP857)EBCDIC 037 USA/CanadaEBCDIC 1026 TurkishEBCDIC 424 HebrewEBCDIC 500 InternationalEBCDIC 875 GreekGSM 03.38ISO 8-bit Urdu (IBM CP1006)ISO 8859-2 (Latin-2)ISO 8859-5ISO 8859-6ISO 8859-7ISO-IR-68ISO/IEC 8859-1 (Latin-1)ISO/IEC 8859-10 (Latin-6)ISO/IEC 8859-11 ISO/IEC 8859-13 (Latin-7)ISO/IEC 8859-14ISO/IEC 8859-15 (Latin-9)ISO/IEC 8859-16 (Latin-10)ISO/IEC 8859-3ISO/IEC 8859-4 (Latin-4)ISO/IEC 8859-8ISO/IEC 8859-9KOI8-RKOI8-UKPS 9566KZ-1048 Mac OS CelticMac OS Central EuropeanMac OS CroatianMac OS CyrillicMac OS DingbatsMac OS GaelicMac OS GreekMac OS IcelandicMac OS InuitMac OS RomanMac OS RomanianMac OS TurkishUTF-8Windows-1250Windows-1251Windows-1252Windows-1253Windows-1254Windows-1255Windows-1256Windows-1257Windows-1258Windows-874Windows-932Windows-936Windows-949Windows-950

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

Загрузить close

content_copy Ссылка save Сохранить extension Виджет

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

Кодировки IBM EBCDIC

EBCDIC — стандартный 8-битный код, разработанный корпорацией IBM для использования на мэйнфреймах IBM и совместимых с ними.

Кодировка Языки / Страны использования
EBCDIC 424 Hebrew Иврит
EBCDIC 037 USA/Canada США, Канада, Португалия, Бразилия, Австралия, Новой Зеландия и Южной Африка
EBCDIC 1026 Turkish Турция
EBCDIC 500 International Интернациональный
EBCDIC 875 Greek Греческий
Кодировки в стандарте ISO 8859

Семейство ASCII совместимых кодировок, разработанных международными организациями ISO и IEC

Кодировка Языки/Страны
ISO 8859-2 (Latin-2) Восточноевропейские языки, использующие латиницу
ISO 8859-5 Кириллица
ISO 8859-6 Арабский
ISO 8859-7 Современный греческий
ISO/IEC 8859-1 (Latin-1) Западноевропейские языки
ISO/IEC 8859-10 (Latin-6) Североевропейские языки
ISO/IEC 8859-11 Тайский
ISO/IEC 8859-13 (Latin-7) Эстонский, латышский, литовский
ISO/IEC 8859-14 Кельтские языки
ISO/IEC 8859-15 (Latin-9) Западноевропейские языки
ISO/IEC 8859-16 (Latin-10) Восточноевропейские языки, использующие латиницу
ISO/IEC 8859-3 Турецкий, мальтийский, эсперанто
ISO/IEC 8859-4 (Latin-4) Эстонский, латышский, литовский, гренландский, саамский
ISO/IEC 8859-8 Иврит
ISO/IEC 8859-9 Турецкий
Кодировки KOI8

KOI8 — 8-битовая кодировка совместимая с ASCII для представления букв кириллических алфавитов

Кодировка Языки
KOI8-R Русский
KOI8-U Украинский
Кодировки Mac OS
Кодировка Языки/Страны
Mac OS Celtic Кельтские языки
Mac OS Gaelic Гэльский
Mac OS Central European Языки Центральной Европы
Mac OS Croatian Сербско/Хорватский
Mac OS Cyrillic Кириллица
Mac OS Greek Греческй
Mac OS Icelandic Исландский
Mac OS Inuit Инуктитут
Mac OS Roman Западноевропейские языки
Mac OS Romanian Румынский
Mac OS Turkish Турецкий
Кодировки DOS

Кодировки для MS-DOS и подобных ей операционных систем.

Кодировка Языки/Страны
DOS Latin US (CP437) Восточноевропейские языки, использующие латиницу
DOS Greek (CP737) Греческий
DOS Baltic Rim (CP775) Эстонский, латышский, литовский
DOS Latin 1 (CP850) Западноевропейские языки
DOS Latin 2 (CP852) Восточноевропейские языки, использующие латиницу
DOS Cyrillic (CP855) Кириллица
CP 856 Hebrew Иврит
DOS Turkish (CP857) Турецкий
DOS Portuguese (CP860) Португальский
DOS Icelandic (CP861) Исландский
DOS Hebrew (CP862) Иврит
DOS French Canada (CP863) Французский
DOS Arabic (CP864) Арабский
DOS Nordic (CP865) Норвежский
DOS Cyrillic Russian (CP866) Русский
DOS Greek 2 (CP869) Греческий
Кодировки Windows
Кодировка Языки/Страны
Windows-1250 Языки Центральной и Восточной Европы
Windows-1251 Русский, украинский белорусский, сербский, македонский, болгарский
Windows-1252 Западноевропейские языки
Windows-1253 Современный греческий
Windows-1254 Турецкий
Windows-1255 Иврит
Windows-1256 Арабский
Windows-1257 Эстонский, латышский, литовский
Windows-1258 Вьетнамский
Windows-874 Тайский
Windows-932 Японский
Windows-936 Упрощенный китайский
Windows-949 Корейский
Windows-950 Традиционный китайский
KZ-1048 Казахский
Прочие кодировки
Кодировка Описание
Atari ST Кодировка, использовалась в домашних персональных компьютерах фирмы Atari
GSM 03.38 Кодировка использовалась в сетях GSM для SMS (коротких сообщений), CB (широковещательная передача коротких сообщений) and USSD (Сервис для организации интерактивных взаимодействий)
KPS 9566 Кодировка, разработанная в Северной Корее для поддержки символов корейского языка Хангыль
ISO 8-bit Urdu (IBM CP1006) Использовалась компанией IBM в операционной системе AIX в Пакистане для языка Урду
ISO-IR-68 Кодировка для представления символов в языке программирования APL

Правила преобразования исторических кодировок в Юникод были получены с сайта unicode.org

Как сменить кодировку в Блокноте по умолчанию с ANSI на другую

Рано или поздно любой пользователь Windows сталкивается с проблемой кодировки текста. «Кракозяблики» настигают всех, кто более-менее часто пользуется компьютером. Особенно остро эта задача стоит перед теми, кто не просто пользуется компьютером, а создаёт какой-то осмысленный контекст, например у себя на сайте. Сайт может находиться на удалённом сервере, где кодировка может отличаться от той, которую предлагает Windows по умолчанию.

Очень кратко:

  1. C:\Windows\ShellNew — создаем пустой текстовый файл, сохраняемым как UTF-8, переименовываем в UTF-8.txt. Он будет шаблоном.
  2. Заходим в реестр HKEY_CLASSES_ROOT / .txt / ShellNew / — создаем «Строковый параметр»: имя — FileName / значение — UTF-8.txt

Немного лирики о том, почему всё так, а не иначе:

Но и для пользователей, остающихся обычными «пользователями ПК» проблема с кодировками кириллистических символов иногда встаёт довольно остро. «Кракозяблики» — наследие предыдущей эпохи, когда каждый программист писал собственную таблицу кодировок. Например, скачал и хочешь почитать интересную книжку, а тут такое >=O

     -- ...‚Ґа®пв­®, ў иЁ¬  ЇҐаўл¬  бҐа쥧­л¬ ®вЄалвЁҐ¬, ¤®Єв®а ЏЁ«м¬ ­,
б«Ґ¤гҐв бзЁв вм в Є ­ §лў Ґ¬л© а ¤Ё ­в ЏЁ«м¬ ­ ?
     -- Џ®« Ј о,  зв®  ­Ґв.  ђ ¤Ё ­в  ЏЁ«м¬ ­   --  нв®  ­Ґ  ЇҐаў®Ґ,  ­Ґ
бҐа쥧­®Ґ Ё, б®Ўб⢥­­®, ­Ґ ®вЄалвЁҐ. € ­Ґ ᮢᥬ ¬®Ґ.
     -- ‚л,  ўҐа®пв­®,  игвЁвҐ, ¤®Єв®а.  ђ ¤Ё ­в  ЏЁ«м¬ ­   --  Ї®­пвЁҐ,
Ё§ўҐбв­®Ґ ўбпЄ®¬г иЄ®«м­ЁЄг.
     -- ќв® ¬Ґ­п  ­Ґ г¤Ёў«пҐв.  ђ ¤Ё ­в ЏЁ«м¬ ­  Ё  Ўл«  ®вЄалв  ўЇҐаўлҐ
Ё¬Ґ­­® иЄ®«м­ЁЄ®¬. Љ ᮦ «Ґ­Ёо, п ­Ґ Ї®¬­о, Є Є ҐЈ® §ў «Ё. Џ®б¬®ваЁвҐ  г
‘вҐвб®­  ў ҐЈ® "€бв®аЁЁ Џ®бҐйҐ­Ёп"  -- в ¬ ўбҐ нв®  Ї®¤а®Ў­® а ббЄ § ­®.
ЋвЄал« а ¤Ё ­в ўЇҐаўлҐ иЄ®«м­ЁЄ, ®ЇгЎ«ЁЄ®ў « Є®®а¤Ё­ вл ўЇҐаўлҐ бв㤥­в,
  ­ §ў «Ё а ¤Ё ­в Ї®зҐ¬г-в® ¬®Ё¬ Ё¬Ґ­Ґ¬.
     -- „ , б ®вЄалвЁп¬Ё Їа®Ёб室пв Ё­®Ј¤   г¤ЁўЁвҐ«м­лҐ  ўҐйЁ. ЌҐ ¬®Ј«Ё
Ўл ўл ®Ўкпб­Ёвм ­ иЁ¬ б«ги вҐ«п¬, ¤®Єв®а ЏЁ«м¬ ­...

И так продолжалось до тех пор, пока не начали вводиться стандарты. Но и стандартов на текущее время уже немало. Например, есть кодировка Unicode, есть UTF-8, есть UTF-16 и так далее…

ВАЖНО!

Я так и не нашёл, как сменить кодировку по умолчанию при открытии Блокнота и создания нового документа уже из открытой сессии Блокнота.

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

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

В данной статье рассмотрен пример для файлов с расширением .txt, а т.к. в Windows программой, открывающей эти файлы по умолчанию является Блокнот, то некоторые считают, что меняют кодировку по умолчанию в самом Блокноте. Но это не так. Меняется кодировка по умолчанию создаваемого файла. Блокнот лишь открывает документ, считывая уже прописанную в нём кодировку. В самом Блокноте прошита кодировка ANSI. И, похоже, это не поменять средствами Реестра Windows.

Как бы Windows не старался насаждать свои стандарты, большинство современных серверов работают на *nix операционных системах потому, что эти системы имеют открытый код и не имеют «корпоративной тайны на семью печатями». То есть, в них можно разобраться самостоятельно: что и как работает. Думаю, и дальше будет такая же тенденция. Все более-менее «продвинутые пользователи ПК» будут использовать программное обеспечение с открытым кодом для работы, и программы «из пакетов» для быстрой обработки данных (чтобы не изобретать велосипедов). На *nix операционных системах на текущий момент кодировкой по умолчанию является кодировка UTF-8. Её можно без особых заморочек выставить другой, но зачем, если она на большинстве серверов и они нормально друг с другом *nix «общаются»? У меня на сервере тоже стоит UTF-8 и это удобно. Поэтому задача у меня стояла, как сменить кодировку в Блокноте по умолчанию для Windows с ANSI на общепринятую UTF-8.

Ну и хватит лирики. К делу!

Сперва удостоверимся в том, что в Блокноте стоит по умолчанию кодировка ANSI, для этого достаточно «Сохранить как…» любой документ и увидеть его кодировку:

Что делать, чтобы сменить кодировку в Блокноте по умолчанию с

ANSI на другую:
  1. Открываем Блокнот или создаём новый текстовый документ и потом его открываем в Блокноте
  2. Меняем кодировку текстового файла
  3. Сохраняем этот документ (я свой назвал по названию кодировки UTF-8.txt)
    1. Если не видно расширение файла, то можно его сделать видимым
    2. Можно сохранить файл и переименовать
  4. Перемещаем созданный документ в папку C:\Windows\ShellNew (сразу создать текстовый документ в этой папке не получится — защита Windows от внесения изменений в системные папки)
    1. Если папки нет (что мало вероятно), то её нужно создать и также переместить на место: C:\Windows\ShellNew
  5. Теперь открываем редактор реестра
  6. Находим папку HKEY_CLASSES_ROOT / .txt / ShellNew / (она должна быть, если нет, то создаём)
  7. Создаём строковый параметр:
    1. С именем FileName
    2. Со значением UTF-8.txt (имя того файла, который мы создали в п.3 перенесли в папку C:\Windows\ShellNew в п.4)
  8. Радуемся! Ибо это всё =)

Теперь при создании текстового файла с помощью контекстного меню у него будет та кодировка, которая была нами установлена в файле-образце, лежащем в папке C:\Windows\ShellNew. Проверяем:

Всё работает! =)

Кстати!

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

Не знаю, где это можно применить, т.к. у меня мало рутины с текстовыми файлами, но это может пригодиться тем, кто работает с шаблонными файлами. Или, например, для создания текстового файла-шаблона для HTML-документов, который можно создать таким же способом. Тогда не нужно будет каждый раз писать структуру <head><title>, <meta>, <body> и т.д..

Заберите ссылку на статью к себе, чтобы потом легко её найти 😉

Выберите, то, чем пользуетесь чаще всего:

Спасибо за внимание, оставайтесь на связи! Ниже ссылка на форум и обсуждение ; )

Как проверить кодировку в текстовом файле? / Общая / SocialKit

Программный комплекс SocialKit корректно работает с кириллицей в текстовых файлах, кодировка которых соответствует стандарту Windows-1251 (кратко может быть записано как CP1251 или ANSI). В этой связи в задачах, поддерживающих указание внешнего файла с перечнем комментариев, сообщений, описаний и прочей информации, которая может содержать кириллицу, нужно указывать текстовые файлы, где русский текст задан в кодировке по стандарту Windows-1251 или же просто ANSI, или CP1251 — всё это, по сути, одно и то же.

Учитывая, что многие инструменты по работе с текстом не отображают, в какой именно кодировке задан текст в текстовом файле и/или не поддерживают преобразование кодировок, то у новичков часто возникает вопрос о том, как именно привести кодировку текстового файла с русским текстом к понятному для SocialKit формату CP1251.

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

Если вы не уверены в том, в какой именно кодировке задан текст, то проще всего этот текст пересохранить через стандартный Блокнот Windows. При пересохранении Блокнот также покажет, в каком формате текст сейчас.

Опишем эту простую процедуру по шагам.

1. Открыть искомый текстовый файл в Блокноте Windows и выбрать пункт меню «Файл» -> «Сохранить как…».

Пример текстового файла, в котором русский текст задан в формате UTF, но это не очевидно при открытии.

2. В открывшемся диалоговом окне вы сразу видите, в какой кодировке был сохранён текст в текстовом файле.

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

Как видно, в примере текст в текстовом файле был ранее сохранён в кодировке UTF-8. Для изменения кодировке достаточно выбрать в выпадающем списке кодировку ANSI и нажать кнопку «Сохранить«.

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

Новый txt-документ в Windows 7 в кодировке UTF-8

Накануне открываю текстовый файл в своём Notepad++ (это удобный функциональный текстовый редактор, подменяющий стандартный виндовский блокнот), а там в тексте местами крокозябры. Ясно, что проблема с кодировкой. Но откуда она взялась, и почему её раньше не было?

Дело в том, что Windows по умолчанию создаёт файл в кодировке ANSI. Не буду углубляться в подробности, тем более, что я в этом особо и не разбираюсь, скажу только, что это не универсальная кодировка (отсюда и проблемы), коей в свою очередь является UTF-8.

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

И вот… в Windows 7 последняя функция почему-то не работает (в отличие, например от Windows XP). Т.е. если вы создали файл в папке из меню Создать => Текстовый документ, то он будет в ANSI и по умолчанию, и при открытии в Notepad++, и при последующем сохранении. Конечно, есть вариант каждый раз пользоваться функцией преобразования кодировки. Но это и неудобно, и запамятовать такое можно легко.

Но есть выход гораздо лучше. Вот он:

  1. Создайте текстовый документ, назовите его TXTUTF-8.txt и откройте в Notepad++. Далее во вкладке Кодировки кликнете по пункту Преобразовать в UTF-8 без BOM и сохраните файл. Важная деталь: лично у меня пустой документ кодировку не сохраняет. Т.е. если всё сделать как написано выше и открыть документ снова, то кодировка снова вернётся к ANSI.
  2. Решил я это поставив в документе точку. Можно поставить и пробел, к примеру. С точкой или пробелом кодировка не «слетает». Но здесь есть и нюанс: если оставите что-то в тексте TXTUTF-8.txt, это «что-то» потом будет появляться и в каждом новом txt-документе. Так что решайте сами. Мне лично точка мешает гораздо меньше, нежели необходимость перекодировать каждый файл.
  3. Зайдите в папку WINDOWS, а в ней в папку SHELLNEW. Если не можете найти SHELLNEW, воспользуйтесь стандартным поиском по имени в правом верхнем углу. Скопируйте (или перенесите) ваш файл TXTUTF-8.txt в эту папку.
  4. Далее вызовите командную строку, для этого можно нажать Win+R или в меню Пуск кликнуть по «Выполнить…». В командной строке напишите regedit и нажмите OK.
  5. В появившемся проводнике последовательно откройте папки HKEY_CLASSES_ROOT => .txt => ShellNew, далее в правом окне кликнете правой кнопкой мыши и выберете Создать => Строковый параметр. Появившийся файл переименуйте в FileName.
  6. Кликнете два раза левой кнопкой мыши по файлу FileName и в поле Значение укажите уже знакомое TXTUTF-8.txt.

Это всё, теперь можно идти пить чай.

Windows-1252 — Wikipédia

Un article de Wikipédia, l’encyclopédie libre.

Windows-1252
Famille Microsoft Windows
языков Allemand, anglais, basque, catalan, danois, espagnol, finnois, français, italien, néerlandais, norvégien, portugais et suédois, parmi d’autres langues européennes
Nombre de caractères ~ 223
État du projet Standardisé от Microsoft
Формы пластин Окна
Organisme /
Parrainage
Microsoft
Numéro d’enregistrement 1252
Séquences d’échappement Бесплатно
Unité de codage (codet) 8 бит
модификатор

Windows-1252 или CP1252 (аббревиатура «кодовая страница — 1252», значимая страница кода — 1252) — это символ, историческое использование системы Microsoft Windows на английском языке. et dans les Principales langues d’Europe de l’Ouest, dont le français.

Впервые в 1990 году, использование кода Windows-1252 было разработано на Западе, после распространения Windows 3.x. Les caractères codés sont appelés par confusion «ANSI» au lieu d ‘occidentaux ( (en) «Western») [1] . L’erreur est corrigée mais l’usage est perpétué par ses successors (notamment Windows 95, 98, NT, 2000, XP, Vista, 2003, 7). В cette époque, le jeu de caractères Windows-1252 se replace aux jeux de caractères DOS, c’est-à-dire à la page de code 437 dans les pays anglophones, et al page de code 850 dans la plupart des pays d ‘Europe de l’Ouest.L’ensemble des logiciels développés для Windows fonctionne alors avec cet ensemble de caractères.

Toutefois, sous l’influence des problèmes d’interopérabilité, des régions francophones multingues (Union européenne, Maghreb) ainsi que de la mondialisation des échanges et du développement d’Internet en specific, et bien que le codulier, et bien que le codulier utilisé, codage subit la concurrence et leveloppement стандартного Unicode.

De nos jours, les applications modernes n’utilisent plus ce type de codage, sauf lorsqu’il est nécessaire pour:

  • Коммюнике о новых приложениях;
  • коммюнике с просьбой о подаче на бис, которое не поддерживает Unicode;
  • Сообщение для консоли Windows [2] .

Windows-1252 является расширением ISO / CEI 8859-1: отличается от кода ISO-8859-1 для использования запрещенных знаков, внесенных в список символов управления, в соответствии с кодами 128–159. utilisateurs de Windows, Microsoft appelle ceci de manière générique ANSI , mais, en fonction de l’endroit où le système d’exploitation a été vendu, l’ensemble de caractères peut Избранные un autre nomis, соответствующие CP1252 Unux États , dans les pays de l’Europe de l’Ouest, le nom validé par l’IANA, Windows-1252.

Живые таблицы на окнах-1252. Номера 81, 8D, 8F, 90 и 9D не используются и не сигнализируют друг о друге. Изменения в соответствии с ISO-8859-1 не сигнализируют о желтом цвете.

Окна-1252 (CP1252)
x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x NUL SOH STX ETX EOT ENQ ACK БЕЛ BS HT LF VT FF CR ТАК SI
1x DLE DC1 DC2 DC3 DC4 НАК SYN ETB CAN EM SUB ESC FS GS RS США
2 шт. SP ! « # $ % и ( ) * + , . _
6 шт. ` а б c д e f г ч и j к л кв.м. n o
7x п. кв r с т u v Вт х л z { | } ~ DEL
8 шт. ƒ Š Œ Ž
9x ˜ š ž Ÿ
Топор NBSP ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ® ¯
Bx ° ± ² ³ ´ µ · ¸ ¹ º » ¼ ½ ¾ ¿
Сх А Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï
Dx Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß
Ex à á â ã ä å æ ç и é ê ë м мкпп
FX ð шт ó ô х ö ÷ ø ù ú û ü ý þ ÿ

Windows-1252 проверена и утилизирована по формам пластин Windows и не используется для анализа существующих систем: DOS не использует страницы с кодами IBM и Linux / Unix. коды ISO (пример ISO-8859-15) или UTF-8.

Заметка о разливах, Unicode (и плюс общий ISO / CEI 10646) имеет тенденцию к тому, чтобы быть предварительно подготовленным.

Совместимость с HTML [модификатор | модификатор кода файла]

Стандарт HTML для W3C, UTF-8 адаптирован для нескольких документов HTML [3] . Cependant, l’usage de Windows-1252 a été si répandu que plusieurs navigateurs support les références numériques de caractères для кодов 128–159, alors qu’ils ne корреспондент в des caractères que pour Windows-1252, mais corrector à des contrô en Unicode si на коде файлов en UTF-8 и non pas en référence numérique.

Ainsi, символ «€» есть символ Unicode numéro 8364 — 20AC (16) -, donc & # 8364; — & # x20AC; — стандартный номер символа «€»; mais, come «€» est le caractère Windows-1252 numéro 128 — 80 (16) -, некоторые навигаторы поддерживают австралийский & # 128; — & # x80; — по номеру ссылки на символ, bien que ce soit illégal en HTML où cela devrait indiquer uncontrôle C1 (par ailleurs, la plupart des contrôles C1 sont illégaux également en HTML, en dehors des contrôles de separation de ligne lesquels lesquels en HTML de les représenter sous forme de numérique référence numérique, aussi bien en décimal qu’en hexadécimal, ce qui exploique alors l’illégalité des références numériques des numéros 128 à 159 для указателя un caractivers dupendurs dupendurs code исключение Windows-1252; Этот режим для кодов, которые не связаны с авторизованными элементами управления C1, и др. с официальным кодом Windows-1252 и другим кодом стандарта Unicode) [4] .

Связь статей [модификатор | модификатор кода файла]

Liens externes [модификатор | модификатор кода файла]

Руководство по кодированию данных и символов для начинающих

Когда я впервые начал работать с компьютерами, все было в формате ASCII ( Американский стандартный код для обмена информацией )

Однако сегодня, работая с сетевыми протоколами и сетевым программированием, вы встретите множество схем кодирования данных и символов.

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

Символы, целые числа, числа с плавающей запятой и т. Д.

При хранении и передаче данных вам необходимо будет представить следующие типы данных:

  • Знаки и цифры, например A и 1
  • Целые числа со знаком и без знака, длинные (32 бита) и короткие (16 бит)
  • Одиночная и двойная с плавающей запятой
  • Логическое i.e Верно и неверно

Так как же компьютер хранит букву А или цифру 1?

Как компьютер хранит число вроде 60101? или 62.0101?

Как передать букву A и т. Д. На другой компьютер по сети?

Компьютеры и кодировка символов

Чтобы сохранить текст в виде двоичных данных, необходимо указать кодировку для этого текста.

Компьютерные системы

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

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

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

В 1968 году ASCII (Американский стандартный код для обмена информацией) был принят в качестве стандарта для кодирования текста для обмена данными.

ASCII

ASCII — это американский стандарт, предназначенный для кодирования английских символов и знаков препинания, используемых на пишущих машинках и телетайпах той эпохи (1960-е годы).

ASCII использует 8 бит, хотя фактически используются только 7 бит.

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

В таблице ниже приведены сводные данные о присвоении кодов.

Таблица ASCII — сводка кодов

Десятичное значение Применение
0-31 Контрольные коды
32-127 Печатные символы
128-255 Не используется

ASCII Расширения

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

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

Наиболее распространенными являются windows 1252 и Latin-1 (ISO-8859).

Windows 1252 и 7-битный ASCII были наиболее широко используемыми схемами кодирования до 2008 года, когда UTF-8 стал наиболее распространенным.

ISO-8859-1, ISO-8859-15, Latin-1

ISO-8859 — это 8-битная кодировка символов, которая расширяет 7-битную схему кодирования ASCII и используется для кодирования большинства европейских языков.Подробности см. В вики.

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

Это очень похоже на схему кодирования windows-1252, но не идентично см. — Сравнение символов в Windows-1252, ISO-8859-1, ISO-8859-15

Юникод

Из-за необходимости кодирования символов иностранного языка и других графических символов были разработаны набор символов Unicode и схемы кодирования.

Наиболее распространенные схемы кодирования:

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

Это схема кодирования переменной ширины, которая была разработана для обеспечения полной обратной совместимости с ASCII. Он использует от 1 до 4 байтов. — вики

Наборы символов и схемы кодирования

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

Набор символов — это список символов, тогда как схема кодирования — это то, как они представлены в двоичном формате.

Лучше всего это видно с Unicode.

В схемах кодирования UTF-8, UTF-16 и UTF-32 используется набор символов Unicode, но символы кодируются по-разному.

ASCII — это набор символов и схема кодирования.

Метка порядка байтов (BOM)

Метка порядка байтов (BOM) — это символ Unicode, U + FEFF , который появляется как магическое число в начале текстового потока и может сигнализировать о нескольких вещах программе, потребляющей текст: –Wiki

  • Порядок байтов или порядок байтов текстового потока;
  • Тот факт, что кодировка текстового потока — Unicode, с высокой степенью достоверности;
  • В какой кодировке Unicode кодируется текстовый поток.

Спецификация отличается для текста в кодировке UTF-8, UTF-16 и UTF-32

Следующая таблица, взятая из Wiki, показывает это.

Редакторы спецификаций и текста

Обычно большинство редакторов обрабатывают спецификации правильно, и они не отображаются.

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

Пример спецификации

На снимке экрана ниже показан простой текстовый файл, содержащий текст TEST , закодированный как UTF-8 в блокноте:

Вы должны заметить, что символы спецификации не видны.

Ниже представлен вывод простой программы Python, которая отображает содержимое файла, содержащего символы TEST (4 символа), сохраненные как ASCII , UTF-8 , UTF-16-BE и UTF- 16-LE

Ссылка — Метка порядка байтов (BOM) в HTML

Общие вопросы и ответы

Q-Как узнать, какая кодировка символов используется в файле?

A- Обычно вы этого не делаете, но некоторые текстовые редакторы, такие как notepad ++, отображают кодировку.Если вы получаете файл, который закодирован с использованием кодировки, отличной от ожидаемой, вы можете получить сообщение об ошибке при попытке прочитать его.

Q- Мой файл находится в формате ASCII, но он нормально декодируется с использованием декодера UTF-8. Это почему?

A- Поскольку UTF-8 обратно совместим с ASCII.

Целые числа и числа с плавающей запятой — большие и

с прямым порядком байтов

Примечание: Поскольку UTF-16 и UTF-32 используют 2-байтовые или 4-байтовые целые числа, следующее применимо к кодированию текста с их использованием

Количество байтов, выделенных для типа Integer или float, зависит от системы.

Пункт

Tutorials охватывает это для языка программирования C , и я буду использовать его для иллюстрации

Если мы возьмем короткое целое число как 2 байта и длинное целое число как 4 байта.

Поскольку они используют несколько байтов, возникает несколько вопросов:

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

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

Вики

На приведенной ниже иллюстрации с использованием Python целое число 16 представлено как 4 байта с использованием порядка больших и младшего порядка байтов.

Порядок сетевых и системных байтов

Сетевой порядок байтов определяет порядок байтов при отправке данных по сети. (TCP / IP обычно Big Endian ).

Это означает, что старший байт отправляется первым.

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

ОС Windows — Little Endian .

Ref- Bit and Byte Видео с заказом

Связанные руководства

Оцените? И используйте Комментарии, чтобы сообщить мне больше

[Всего: 12 Среднее: 4,8 / 5]

HTML Windows-1252 Ссылка

17

0 плюс

0 знак

05

0 восемь

9001 7: заглавная буква E 17 17 строчная l латинская 9 0017 t 17 (см. ниже) ;
Символ Номер Название объекта Описание
0-31 Управляющие символы (см. Ниже)
32 пробел
! 33 восклицательный знак
« 34 & quot; кавычка
# 35 номерной знак
$ знак доллара
% 37 знак процента
и 38 и амперсанд
000 39 9rophe 40 левая скобка
) 41 правая скобка
* 42 звездочка
, 44 запятая
45 дефис-минус
. 46 точка полной остановки
/ 47 солидус
0 48 цифра ноль
1 49 единица
2 50 цифра два
3 51 цифра три
4 52 цифра четыре цифра пять
6 54 цифра шесть
7 55 цифра семь
8
9 57 цифра девять
58 двоеточие
; 59 точка с запятой
< 60 & lt; знак меньше
= 61 знак равенства
> 62 & gt; Знак «больше»
? 63 вопросительный знак
@ 64 коммерческий номер
A 65 Заглавная латинская буква A
66 B B Заглавная латинская буква B
C 67 Заглавная латинская буква C
D 68 Заглавная латинская буква D
E 69
F ​​ 70 Заглавная латинская буква F
G 71 Заглавная латинская буква G
H буква 72 H
I 73 Латинская заглавная буква буква I
J 74 Заглавная латинская буква J
K 75 Заглавная латинская буква K
L буква 76 заглавная латинская буква
M 77 Заглавная латинская буква M
N 78 Заглавная латинская буква N
O 79 8 Латинская заглавная буква
P 80 Заглавная латинская буква P
Q 81 Заглавная латинская буква Q
R 82 Заглавная латинская буква R
9 S 83 Заглавная латинская буква S
T 90 008 84 Заглавная латинская буква T
U 85 Заглавная латинская буква U
V 86 Заглавная латинская буква V
W
W 87 Заглавная латинская буква W
X 88 Заглавная латинская буква X
Y 89 Заглавная латинская буква Y
Z Заглавная латинская буква Z
[ 91 левая квадратная скобка
\ 92 обратный солидус
] 93 93 кронштейн
^ 94 с циркумфлексом акцент
_ 95 нижняя строка
` 96 могильный акцент
a 97 8 латинская строчная
98 Строчная латинская буква b
c 99 Строчная латинская буква c
d 100 Строчная латинская буква d
e 101 Строчная латинская буква e
f 102 Строчная латинская буква f
g 103 Строчная латинская буква g
h Строчная латинская буква h
i 105 Строчная латинская буква i
j 106 Строчная латинская буква j
k 107 Строчная латинская буква k
l 108
m 109 строчная латинская буква m
n 110 строчная латинская буква n
o строчная 111 o
p 112 Строчная латинская буква p
q 113 Строчная латинская буква q
r 114 8 Строчная латинская буква
s 115 Строчная латинская буква s
116 Строчная латинская буква t
u 117 Строчная латинская буква u
v 118 Строчная латинская буква v w9
119 Строчная латинская буква w
x 120 Строчная латинская буква x
y 121 Строчная латинская буква y
z 122 Строчная латинская буква z
{ 123 левая фигурная скобка
| 124 вертикальная линия
} 125 правая фигурная скобка
~ 126 тильда
128 и евро; знак евро
129 НЕ ИСПОЛЬЗУЕТСЯ
130 & sbquo; одинарная кавычка с малым числом 9
ƒ 131 & fnof; Строчная латинская буква f с крючком
132 & bdquo; двойная кавычка low-9
133 & hellip; многоточие по горизонтали
134 & кинжал; кинжал
135 и кинжал; двойной кинжал
ˆ 136 & circ; модификатор буквы с циркумфлексом ударение
137 & permil; знак промилле
Š 138 & Scaron; Заглавная латинская буква S с кароном
139 & lsaquo; одинарная кавычка, указывающая влево
Œ 140 & OElig; Латинская заглавная лигатура OE
141 НЕ ИСПОЛЬЗУЕТСЯ
& Zcaron; 142 и Zcaron; Латинская заглавная буква Z с кароном
143 НЕ ИСПОЛЬЗУЕТСЯ
144 НЕ ИСПОЛЬЗУЕТСЯ
145 левая одинарная кавычка
146 & rsquo; правая одинарная кавычка
147 & ldquo; левая двойная кавычка
148 & rdquo; правая двойная кавычка
149 & bull; пуля
150 & ndash; en тире
151 & mdash; длинное тире
˜ 152 & тильда; маленькая тильда
153 & trade; знак торговой марки
š 154 & scaron; Строчная латинская буква s с кароном
155 & rsaquo; одинарная кавычка с прямым углом
œ 156 & oelig; Строчная латинская лигатура oe
157 НЕ ИСПОЛЬЗУЕТСЯ
& zcaron; 158 & zcaron; Строчная латинская буква z с кароном
Ÿ 159 & Yuml; Заглавная латинская буква Y с тремой
160 & nbsp; непрерывное пространство
¡ 161 & iexcl; перевернутый восклицательный знак
¢ 162 & cent; центов знак
£ 163 & фунт; знак фунта
¤ 164 & Curren; знак валюты
¥ 165 и иен; йен знак
¦ 166 & brvbar; сломанный стержень
§ 167 & sect; знак раздела
¨ 168 & uml; диэрезис
© 169 и копия; знак авторского права
ª 170 & ordf; женский порядковый показатель
« 171 & laquo; двойные угловые кавычки, указывающие влево
¬ 172 & not; не подписывать
173 & shy; мягкий перенос
® 174 & reg; зарегистрированный знак
¯ 175 & macr; макрон
° 176 & deg; знак градуса
± 177 & plusmn; знак плюс-минус
² 178 & sup2; верхний индекс два
³ 179 & sup3; тройной верхний индекс
´ 180 и острый; острый акцент
µ 181 & микро; микроподпись
182 и пара; знак Pilcrow
· 183 & middot; средняя точка
¸ 184 & cedil; седилла
¹ 185 & sup1; верхний индекс один
º 186 & ordm; мужской порядковый номер
» 187 & raquo; двойные угловые кавычки, указывающие вправо
¼ 188 & frac14; вульгарная фракция одна четверть
½ 189 & frac12; вульгарная фракция одна половина
¾ 190 & frac34; вульгарная фракция три четверти
¿ 191 & iquest; перевернутый вопросительный знак
À 192 & Agrave; Латинская заглавная буква А с тупым ударением
Á 193 & Aacute; Заглавная латинская буква A с острым ударением
 194 & Acirc; Заглавная латинская буква A с циркумфлексом
à 195 & Atilde; Заглавная латинская буква A с тильдой
Ä 196 & Auml; Заглавная латинская буква A с тремой
Å 197 & Aring; Заглавная латинская буква A с кольцом сверху
Æ 198 & AElig; Заглавная латинская буква AE
Ç 199 & Ccedil; Заглавная латинская буква C с седилем
È 200 & Egrave; Заглавная латинская буква E с тупым ударением
É 201 & Eacute; Заглавная латинская буква E с острым ударением
Ê 202 & Ecirc; Заглавная латинская буква E с циркумфлексом
Ë 203 & Euml; Заглавная латинская буква E с тремой
Ì 204 & Igrave; Латинская заглавная буква I с могилой
Í 205 & Iacute; Заглавная латинская буква I с острым ударением
Î 206 & Icirc; Заглавная латинская буква I с циркумфлексом
Ï 207 & Iuml; Заглавная латинская буква I с тремой
Ð 208 & ETH; Заглавная латинская буква Eth
Ñ 209 & Ntilde; Заглавная латинская буква N с тильдой
Ò 210 & Ograve; Латинская заглавная буква O с могилой
Ó 211 & Oacute; Заглавная латинская буква O с острым ударением
Ô 212 & Ocirc; Латинская заглавная буква O с циркумфлексом
Õ 213 & Otilde; Заглавная латинская буква O с тильдой
Ö 214 & Ouml; Заглавная латинская буква O с тремой
× 215 & раз; знак умножения
Ø 216 & Oslash; Заглавная латинская буква O со штрихом
Ù 217 & Ugrave; Латинская заглавная буква U с тупым ударением
Ú 218 & Uacute; Заглавная латинская буква U с острым ударением
Û 219 & Ucirc; Заглавная латинская буква U с циркумфлексом
Ü 220 & Uuml; Заглавная латинская буква U с тремой
Ý 221 & Yacute; Заглавная латинская буква Y с острым ударением
Þ 222 & THORN; Заглавная латинская буква Thorn
ß 223 & szlig; Строчная латинская буква, резкая s
à 224 & agrave; Строчная латинская буква а с тупым ударением
á 225 & aacute; Строчная латинская буква А с острым ударением
â 226 & acirc; Строчная латинская буква а с циркумфлексом
ã 227 & atilde; Строчная латинская буква а с тильдой
ä 228 & auml; Строчная латинская буква а с тремой
å 229 & aring; Строчная латинская буква а с кружком сверху
æ 230 & aelig; Строчная латинская буква ae
ç 231 & ccedil; Строчная латинская буква c с седилем
è 232 & egrave; Строчная латинская буква е с тупым ударением
é 233 & eacute; Строчная латинская буква e с острым ударением
ê 234 & ecirc; Строчная латинская буква e с циркумфлексом
ë 235 & euml; Строчная латинская буква e с тремой
ì 236 & igrave; Строчная латинская буква i с тупым ударением
í 237 & iacute; Строчная латинская буква i с острым ударением
î 238 & icirc; Строчная латинская буква i с циркумфлексом
ï 239 & iuml; Строчная латинская буква i с тремой
ð 240 & eth; Строчная латинская буква eth
ñ 241 & ntilde; Строчная латинская буква n с тильдой
ò 242 & ograve; Строчная латинская буква o с тупым ударением
ó 243 & oacute; Строчная латинская буква o с острым ударением
ô 244 & ocirc; Строчная латинская буква o с циркумфлексом
х 245 & otilde; Строчная латинская буква o с тильдой
ö 246 & ouml; Строчная латинская буква o с тремой
÷ 247 & div; разделительный знак
ø 248 & oslash; Строчная латинская буква o со штрихом
ù 249 & ugrave; Латинская строчная буква u с тупым ударением
ú 250 & uacute; Строчная латинская буква u с острым ударением
û 251 & ucirc; Строчная латинская буква u с циркумфлексом
ü 252 & uuml; Строчная латинская буква u с тремой
ý 253 & yacute; Строчная латинская буква y с острым ударением
þ 254 & thorn; Строчная латинская буква шип
ÿ 255 & yuml; Строчная латинская буква y с диэрезисом

Важность кодирования символов, перевода веб-сайтов и взаимодействия с пользователем

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

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

Почему это происходит?

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

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

Чтобы правильно отображать переведенный цифровой контент, необходимо использовать правильный набор символов (также известный как кодировка символов).

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

ASCII

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

Большинство современных подмножеств кодировки символов основаны на схеме кодирования символов ASCII и поддерживают несколько дополнительных символов.

ANSI / Windows-1252

Когда появилась операционная система Windows, быстро был принят новый стандарт, известный как набор символов ANSI. Фраза «ANSI» также была известна как кодовые страницы Windows (кодовая страница 1252), хотя она не имела ничего общего с Американским национальным институтом стандартов.

Кодировка

Windows-1252 или CP-1252 (кодовая страница 1252) стала популярной с появлением Microsoft Windows, но в конечном итоге была вытеснена, когда Unicode был реализован в Windows.

ISO-8859-1

Набор кодировок ISO-8859-1 включает все символы Windows-1252, включая расширенное подмножество знаков препинания и деловых символов. Этот стандарт можно было легко перенести на несколько текстовых процессоров и даже на недавно выпущенные версии HTML 4.

ISO-8859-1 был прямым расширением набора символов ASCII. Хотя для того времени поддержка была обширной, формат все еще был ограничен.

UTF-8

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

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

UTF-8 был разработан для полной обратной совместимости с ASCII.

Большая идея

Итак, ясно, что каждый набор символов использует уникальную таблицу идентификационных кодов для представления определенного символа пользователю.Если вы использовали набор символов ISO-8859-1 для редактирования документа, а затем сохранили этот документ как документ в кодировке UTF-8, не объявляя, что содержимое было UTF-8, специальные символы и бизнес-символы будут отображаться нечитаемыми.

Большинство современных веб-браузеров поддерживают устаревшие кодировки символов, поэтому веб-сайт может содержать страницы, закодированные в ISO-8859-1, Windows-1252 или любом другом типе кодировки. Браузер должен правильно отображать эти символы на основе формата кодировки символов, не сообщаемого сервером.

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

Это заставляет ваш браузер или мобильное устройство определять правильный тип кодировки символов для страницы. Основываясь на спецификациях WHATWG, принятых W3C, наиболее типичным резервным вариантом по умолчанию является UTF-8. Однако некоторые браузеры вернутся к ASCII.

Советы и следующие шаги

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

  • Содержимое сохранено и закодировано с использованием UTF-8
  • Объявите тип кодировки на своей странице с помощью метатегов
  • Ваш сервер предоставляет правильные данные (даже если данные на вашей странице правильно закодированы в UTF-8 и объявлены на странице, ваш сервер может обслуживать страницу с заголовком HTTP, который читается конечным пользователем как другая кодировка)
  • Заголовок HTTP Content-Type имеет UTF-8, указанный как тип кодировки

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

Последнее обновление 18 ноября 2020 г.

Локализаций и кодировок символов — Руководство разработчика

Браузеры обрабатывают текст как Unicode внутри себя. Однако способ представления символов в байтах (кодировка символов) используется для передачи текста по сети в браузер. Спецификация HTML рекомендует использовать кодировку UTF-8 (которая может представлять весь Юникод) и независимо от используемой кодировки требует, чтобы веб-контент объявлял, какая кодировка была использована.

Атрибут charset элемента используется для указания кодировки символов страницы. должен использоваться в блоке .

Чтобы указать, что страница использует, например, кодировку символов UTF-8 (согласно рекомендации), поместите следующую строку в блок :

  
  

Когда кодировка объявлена ​​веб-контентом, как того требует спецификация HTML, Firefox будет использовать эту кодировку для преобразования байтов во внутреннее представление.К сожалению, использование UTF-8 и объявление об использовании UTF-8 не всегда было распространенным способом предложения веб-контента. В 1990-е годы было обычным делом оставлять кодировку необъявленной и использовать кодировку, специфичную для региона, которая не могла представить весь Юникод.

Firefox нуждается в резервной кодировке, которую он использует для несовместимого устаревшего контента, который не объявляет свою кодировку. Для большинства локалей резервной кодировкой является windows-1252 (часто называемая ISO-8859-1), которая была кодировкой, испускаемой большинством приложений Windows в 1990-х годах, и надмножеством кодировки, испускаемой большинством приложений UNIX в 1990-х годах в качестве развернутой в Америке есть и в Западной Европе.Однако есть регионы, где веб-публикация была распространена уже в 1990-х годах, но кодировка windows-1252 не подходила для местного языка. В этих языковых стандартах унаследованный контент, не объявляющий свою кодировку, обычно кодируется с использованием устаревшей кодировки, отличной от windows-1252. Для работы с устаревшим контентом в некоторых локализациях Firefox требуется резервная кодировка, отличная от Windows-1252.

К сожалению, это означает, что функциональные возможности Firefox, доступные в Интернете, различаются в зависимости от локали, и трудно читать устаревший контент в разных регионах с разными резервными кодировками.Чтобы избежать появления этой проблемы в регионах, где веб-публикация стала популярной после принятия UTF-8, в регионах, в которых нет устаревшей кодировки, отличной от Windows-1252, возникшей в результате практики 1990-х годов, следует оставить резервную кодировку в Windows- 1252, чтобы облегчить чтение содержимого между языками из старых языковых стандартов, резервная кодировка которых — windows-1252. Ожидается, что контент UTF-8, созданный для новой локали, объявляет свою кодировку, и в этом случае резервная кодировка не участвует в обработке контента.

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

Текст ниже относится к каноническим названиям кодировок. Канонические имена — это значения справа от знака равенства в unixcharset.характеристики.

Начиная с Firefox 28, этот раздел устарел, поскольку предпочтение intl.charset.default больше не существует. Преобразование локалей в резервные кодировки теперь встроено в сам Gecko.

Резервная кодировка определяется параметром intl.charset.default в intl.properties . Он должен быть установлен на каноническое имя устаревшей кодировки, с которой пользователи локализаций, скорее всего, столкнутся при просмотре несоответствующего устаревшего веб-контента, который не объявляет свою кодировку.Обратите внимание, что резервная кодировка, определенная в предыдущем предложении, не обязательно должна иметь возможность представлять символы, необходимые для языка локализации!

Резервную кодировку следует оставить для windows-1252 для регионов Западной Европы, Северной, Центральной и Южной Америки, Африки, Центральной Азии и Океании. Как правило, для регионов Центральной и Восточной Европы, Ближнего Востока и стран Восточной Азии необходимо установить что-то другое, кроме windows-1252.

Во избежание проблемы веб-авторов, создающих новый контент UTF-8, не объявляя, что контент использует UTF-8, и чтобы максимизировать возможность пользователей читать контент в разных языках, не устанавливает резервную кодировку на UTF-8 для любой новой локализации. Обратите внимание, что Firefox больше не отправляет HTTP-заголовок Accept-Charset , поэтому нет необходимости учитывать, что объявляется в Accept-Charset при установке резервной кодировки.

Для языков, в которых в настоящее время используется резервная кодировка ISO-8859-1, ее следует изменить на windows-1252. ISO-8859-1 декодируется точно так же, как windows-1252, но Firefox переходит к обработке windows-1252 как предпочтительной метки для этой кодировки в соответствии со стандартом кодирования.

Для регионов, где Internet Explorer имеет большую долю рынка, чем Firefox, резервная кодировка обычно должна быть установлена ​​на то же значение, что и в Internet Explorer. Вы можете увидеть резервную кодировку конкретного браузера, загрузив тестовую страницу.(Обязательно используйте установку браузера, в которой настройки оставлены по умолчанию, когда исследуете!)

Для регионов, где Firefox имеет большую долю рынка, чем Internet Explorer, вероятно, лучше не изменять резервную кодировку, даже если она не соответствует приведенным выше инструкциям. (Например, резервная кодировка для польского, венгерского и чешского языков, вероятно, должна оставаться ISO-8859-2, даже если IE имеет другую резервную кодировку.)

В случае сомнений используйте windows-1252 в качестве резервной кодировки.

Режим эвристического обнаружения определяется параметром intl.charset.detector в intl.properties . Параметр необходимо оставить пустым для всех языков, кроме русского, украинского и японского. Ни в коем случае не указывайте «универсальный» детектор. Это не совсем универсальный , несмотря на название!

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

Параметр intl.charsetmenu.browser.static в intl.properties упрощает доступ к некоторым кодировкам символов в меню «Кодировка символов» в браузере. Значение должно быть списком канонических кодировок, разделенных запятыми. Список должен включать как минимум резервную кодировку, windows-1252 и UTF-8. Для локалей, где существует несколько распространенных устаревших кодировок, все эти кодировки должны быть включены.Например, резервная кодировка для японского языка — Shift_JIS, но есть и другие устаревшие кодировки: ISO-2022-JP и EUC-JP. Следовательно, имеет смысл использовать в списке Shift_JIS, EUC-JP, ISO-2022-JP, windows-1252, UTF-8.

Как решить проблемы с кодировкой Unicode

Кодировка

прозрачна для большинства пользователей.

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

РЕЗЮМЕ
1. Что такое кодирование?
⇒ Расшифровка кодировок на конкретном примере

2. Формат UTF-8
⇒ Сосредоточьтесь на формате Unicode UTF-8, который теоретически устраняет любые проблемы с кодировкой

3. Постоянные проблемы с кодировкой
⇒ Почему, несмотря на формат Unicode, проблемы с кодировкой остаются актуальными?

4. Определение кодировки файла
⇒ Мы предлагаем стандартные инструменты для простого определения кодировки текста

5.Расширенное упражнение VBA
⇒ Способ создания файлов Unicode в VBA с или без спецификации

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

Строка хранится в памяти не как строка, а как 0 и 1 в двоичном формате.

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

Пример :

Следующая строка закодирована кодом «Windows-1252»:
«L’exp é rience est le nom que chacun donne à ses erreurs.”Оскар Уайльд
В шестнадцатеричном коде это представлено, как показано ниже:

22 4C 27 65 78 70 E9 72 69 65 6E 63 65 20 65 73 “L’exp é rience es
74 20 6C 65 20 6E 6F 6D 20 71 75 65 20 63 68 61 t le nom que cha
63 75 6E 20 64 6F 6E 6E 65 20 E0 20 73 65 73 20 cun donne à ses
65 72 72 65 75 72 73 2E 22 20 4F 73 63 61 72 20 ошибок.”Оскар
57 69 6C 64 65 Wilde

Седьмой символ « é » сохраняется в памяти с использованием следующего шестнадцатеричного значения: « E9 ».

В таблице символов Windows-1252 код « E9 » соответствует французскому символу « é »:

Окна-1252 (CP1252)
x0 х1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
1x DLE DC1 DC2 DC3 DC4 НАК SYN ETB CAN EM ПОД ESC ФС GS RS США
2x SP ! # $ % и ( ) * + , . _
6x ` а б c д e f г ч и j к л кв.м. n или
7x п. кв r с т u v Вт х л z { | } ~ DEL
8x ƒ ˆ Š Œ Ž
9x ˜ š ž Ÿ
Топор НБСП ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ® ¯
Bx ° ± ² ³ ´ µ · ¸ ¹ º » ¼ ½ ¾ ¿
Сх А Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï
Dx Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß
Пример: до á â ã ä å æ ç и é ê ë м ï
Факс ð шт ó ô х ö ÷ ø ù ú û ü ý þ ÿ

Тем не менее, если вы войдете в окно MS-DOS, шестнадцатеричный код «E9» не будет отображаться правильно!

Действительно, французское окно MS-DOS покажет следующее:

Cd \ temp
Типовые испытания.txt
«L’exp Ú rience est le nom que chacun donne Ó ses erreurs». Оскар Уайльд

Это просто потому, что MS-DOS по умолчанию считает, что тексты (на французском компьютере) кодируются с использованием страницы 850 ниже:

стр. 850 (DOS latin-1)
x0 х1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
1x DLE DC1 DC2 DC3 DC4 НАК SYN ETB CAN EM ПОД ESC ФС GS RS США
2x SP ! # $ % и ( ) * + , . _
6x ` а б c д e f г ч и j к л кв.м. n или
7x п. кв r с т u v Вт х л z { | } ~ DEL
8x Ç ü é â ä до å ç ê ë и ï м Ä Å
9x É æ Æ ô ö шт û ù ÿ Ö Ü ø £ Ø × ƒ
Топор á ó ú Ñ ª º ¿ ® ¬ ½ ¼ ¡ « »
Bx Á Â А © ¢ ¥
Сх ã Ã = ¤
Dx ð Ð Ê Ë È Í Î Ï ¦ Ì
пр. Ó ß Ô Ò х Õ µ þ Þ Ú Û Ù ý Ý ¯ ´
Факс SHY ± ¾ § ÷ ¸ ° ¨ · ¹ ³ ² НБСП

Шестнадцатеричный код « E9 » соответствует символу « Ú » из списка символов на странице 850 и не соответствует символу « é », как мы могли ожидать.

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

Таким образом, сложность двоякая:

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

В блоге INVIVOO используется кодировка UTF-8. Но если бы вам было интересно принудительно использовать кодировку ISO-8859-7 в Internet Explorer с помощью меню «Вид => Кодировка => Больше => Греческий (ISO)», то следующие символы windows-1252 будут отображаться неправильно.

x0 х1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
Факс ð шт ó ô х ö ÷ ø ù ú û ü ý þ ÿ

При использовании ISO-8859-7 указанные выше символы будут отображаться как следующие символы:

x0 х1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
Факс Γ ° Γ ± Γ² Γ³ Γ΄ Γ΅ ΓΆ Г · ΓΈ ΓΉ ΓΊ Γ » ΓΌ Γ½ ΓΎ ΓΏ

Мы видим, что ожидаемые западные символы теперь отображаются плохо и что есть 2 символа вместо одного.

Это связано с тем, что в кодировке Unicode UTF-8 западные специальные символы все двухбайтовых кодированных . И потому, что кодировка ISO-8859-7 (греческий) считает, что каждый из этих двух байтов сам по себе является символом в своей таблице сопоставления.

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

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

Формат Unicode родился из желания унифицировать множество существующих кодировок. Множественность кодов была необходима, потому что системы всегда считали, что один байт соответствует одному символу. Однако в байте можно закодировать только 256 символов.Поэтому некоторым языкам требовался собственный расширенный код ASCII. Французское « é », например, совершенно бесполезно для греков, которым также необходимо кодировать целый собственный алфавит.

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

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

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

Специальные символы в UTF-8 хранятся в шестнадцатеричном формате от 2 до 4 байтов. Он кодируется просто с учетом карты символов UTF-8. Почему-то все так же просто, как раньше. : «Код» всегда представляет собой отдельный символ в отображении символов.

Если приложение не может прочитать UTF-8 или если оно принудительно используется в расширенном ASCII (как в нашем предыдущем примере с принудительным использованием ISO-8859-7 в Internet Explorer), то приложение будет читать каждый байт как один отдельный символ. Однако все специальные символы Западной Европы закодированы 2 байтами в UTF-8.

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

Теперь вы знаете почти все о UTF-8:

— Имеет обратную совместимость с ASCII
— Специальные символы хранятся в 2–4 байтах
— Как и любая кодировка, приложение, которое «считывает» шестнадцатеричный код, должно использовать правильную кодировку

Вы знаете только «почти все», потому что в Unicode есть особая функция, которая по-прежнему вызывает некоторые проблемы совместимости: BOM (Byte Mark Order).Об этом мы поговорим в следующей части.

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

Если UTF-8 содержит все символы и может заменить все коды, почему мы все еще сталкиваемся с проблемами кодирования ???

1. Изменение требует времени

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

2. Специфика Microsoft Windows

Microsoft взяла на себя смелость создать свои собственные таблицы символов, производные от таблиц ISO-8859-x. Более того, невозможно узнать, использует ли текст таблицу ISO или таблицу Windows, потому что обе они соответствуют просто последовательности байтов.

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

Таким образом, отправка текстового файла Windows на сервер Linux или собственное приложение может легко ввести в заблуждение.

3. Символьные шрифты

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

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

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

3. Спецификация (метка порядка байтов)

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

Это часто вызывает проблемы совместимости, потому что не все приложения знают, как обрабатывать «BOM». Для несовместимых приложений эта последовательность байтов считается некоторыми нормальными символами в расширенном ASCII. В случае, если файл UTF-8 ошибочно распознан как файл Windows-1252, мы увидим 3 странных символа в самом начале файла: ï »¿.

Символы ï »¿соответствуют шестнадцатеричной строке EF BB BF, которая представляет собой код, указывающий совместимым приложениям, что файл является файлом Unicode в формате UTF-8.

Другая проблема спецификации — путаница, которую она может вызвать у пользователя. EF BB BF соответствует некоторым непечатаемым символам в UTF-8. Таким образом, в текстовом редакторе Unicode трудно узнать, была ли применена спецификация или нет, поскольку она невидима, а также необязательна в файле UTF-8. Многие пользователи, скорее всего, не знают, что такое BOM и как это может привести к сбою несовместимых приложений.

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

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

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

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

Если у вас нет доступа к расширенным (и обычно платным) текстовым редакторам, вы можете легко сделать это с помощью стандартных шестнадцатеричных редакторов в Windows и Linux.

В Windows:
— Ключевые окна + R
— Командная оболочка powershell
— Cd \ temp
— Fhx test.txt

В Linux:
cd / home / test /
file -bi test.txt
=> Linux будет «пытаться» показать формат файла, но если вы хотите увидеть тег спецификации, необходимо ввести следующее :
xxd test.txt

Если в самом начале файла есть тег спецификации, то это текст в формате Unicode:
UTF-8 = EF BB BF
UTF-16 Big Endian = FE FF
UTF-16 Little Endian = FF FE
UTF-32 Big Endian = 00 00 FE FF
UTF-32 Little Endian = FF FE 00 00

Прежде всего, помните, что отсутствие тега спецификации не означает, что файл не является файлом Unicode.

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

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

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

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

Чтобы создавать файлы UTF-8 в удобное для вас время — с отметкой порядка байтов или без нее — вам необходимо знать следующие ограничения VBA :

1. Команда Print # 1 не сохраняется в UTF-8, вы потеряете свои символы Unicode.
Пример :
Откройте «c: \ Temp \ test.txt» для вывода как # 1
Print # 1, « Линия 1: особый символ Юникода: Ж = D0 96 ”

2. Команда SavetoFile из объекта «ADODB.Stream» всегда создает спецификацию «EF BB BF» для файлов UTF-8! Не ищите слишком много: нет возможности написать UTF-8 без спецификации, но мы предоставим вам решение .

Знание этих двух ограничений сэкономит вам много времени на исследования.

Ниже приведен пример кода, который позволяет создать два файла: один со спецификацией «EF BB BF», а другой — без спецификации.

Подложка Create_UTF8 ()

Dim lStreamUTF8BOM, lStreamBinaireSansBOM как объект
Установить lStreamUTF8BOM = CreateObject («ADODB.Stream»)
Установить lStreamBinaireSansBOM = CreateObject («ADODB.Stream»)

‘Мы создаем главный поток
lStreamUTF8BOM.Type = 2‘ 2 = Type Texte
lStreamUTF8BOM.Mode = 3 ‘3 = Mode Read and Write
lStreamUTF8BOM.Charset =« UTF-8 »‘ Unicode UTF-8 format with BOM
lStreamUTF8BOM.Open

lStreamUTF8BOM.WriteText «Линия 1: особый символ Юникода: Ж = D0 96» и vbCrLf
lStreamUTF8BOM.WriteText «Линия 2» и vbCrLf

‘сохранение как UTF-8 с BOM
lStreamUTF8BOM.SaveToFile« c: \ Temp \ UTF8withBOM.txt », 2‘ 2 = перезаписать

‘сохранение как UTF-8 без спецификации
lStreamBinaireSansBOM.Type = 1‘ 1 = двоичный поток
lStreamBinaireSansBOM.Mode = 3 ‘3 = Mode Read and Write
lStreamBinaireSansBOM.Open
lStreamUTF8BOM.Position = 3
lStreamUTF8BOM.CopyTo lStreamBinaireSansBOM

lStreamBinaireSansBOM.SaveToFile «c: \ Temp \ UTF8withoutBOM.txt», 2 ‘2 = перезаписать
lStreamBinaireSansBOM.Flush
lStreamBinaireSansBOM.Close
lStreamUTFlose8BOM.Flush 9468 lStreamUTFlose8BOM.Flush

6

Концевой переводник

Чтобы проверить результаты, вы можете открыть файлы в C: \ TEMP \ с помощью Powershell и команды fhx, как показано в предыдущем разделе.

Мы показали вам, как работает кодирование и что принесла революция UTF-8.

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

Теперь у вас есть все инструменты, которые помогут диагностировать возможные проблемы с кодировкой, и вы можете сделать это, используя только некоторые стандартные инструменты!

Справка Microsoft Office Word 2003

Справка по Microsoft Office Word 2003 — Документация по Microsoft Office Word 2003
Microsoft Office Word 2003

Содержание

  • Запуск и настройки
    • Что нового в Microsoft Office Word 2003
    • Что нового в Microsoft Office 2003
    • Об активации продукта в продуктах Microsoft Office System
    • Заявление об ограничении ответственности: использование вымышленных имен
    • Условия эксплуатации
    • Получать помощь
    • Доступность
    • Установка и настройка
      • Установить или удалить отдельные компоненты в Office
      • Показать или скрыть всплывающие подсказки
      • Получите информацию о вашей программе и компьютере
      • Показать или скрыть список недавно использованных документов в меню «Файл»
      • Изменить внешний вид офиса
      • Откройте файл подшивки Office
      • Настройте запуск Word
      • Панели инструментов и команды
        • О меню и панелях инструментов
        • Добавить кнопку, меню или команду
        • Назначьте гиперссылку кнопке панели инструментов или команде меню
        • Удалить кнопку или команду меню
        • Элементы, которые отображаются в строке состояния
        • Перемещение или копирование кнопки, меню или команды меню
        • Назначьте или измените ускоритель клавиатуры
        • Создать настраиваемую панель инструментов
        • Группируйте связанные кнопки и меню на панели инструментов
        • Переместить подменю в любое место на экране
        • Настроить контекстное меню
        • Переименовать кнопку, команду меню или меню
        • Удалить панель инструментов или меню
        • Показать или скрыть панель инструментов
        • Переместить панель инструментов
        • Показать все кнопки или команды
        • Анимировать меню
        • Изменить размер панели инструментов
        • Добавление, изменение или удаление звуков, используемых с кнопками и командами меню
        • Изменить картинку на кнопке
        • Изменение размера кнопки панели инструментов или раскрывающегося списка
        • Отображение значка, текста или того и другого в команде или кнопке меню
        • Переименовать настраиваемую панель инструментов
        • Восстановить исходные настройки для кнопок, команд или панелей инструментов
        • Показать или скрыть всплывающие подсказки на панели инструментов
        • Показать или скрыть сочетания клавиш в всплывающих подсказках
        • Устранение неполадок с панелями инструментов и меню
      • Устранение неполадок при установке Office
      • Глобальные шаблоны и надстройки
    • Использование Microsoft Office
    • Управление файлами
    • Почерк и речь
  • Создание документов
  • Просмотр и навигация по документам
  • Форматирование документов
  • Работа с текстом
  • Работа с графикой и диаграммами
    • О графике в Word
    • Выбрать текст и графику
    • Размещение графики и текста
    • Изменить расположение графики по умолчанию
    • Добавление текста к объекту рисунка или рисунку
    • Изменение стиля обтекания текстом для рисунка или графического объекта
    • Изменить ориентацию текста
    • Определите, является ли изображение растровым или нарисованным
    • Изменение размера или обрезка графики
    • О группировке и разгруппировке объектов
    • О переносимой сетевой графике (.png) формат
    • О наложении объектов
    • Группировать, разгруппировать или перегруппировать объекты
    • Переместить объект вперед или назад
    • Сохранить графику в формате .png
    • Установить значения по умолчанию для нового стиля изображения или формы
    • Устранение неполадок с графикой
    • Включение или выключение холста для рисования
    • Управление и просмотр графики
    • Фигуры и объекты чертежа
    • Границы, заливка и графические заливки
      • О границах, затенении и графической заливке
      • Добавить границу
      • Добавление заливки, цвета или графической заливки
      • Изменить границу
      • Изменение затенения, цвета или графической заливки
      • Удалить границу
      • Удаление затенения, цвета или графической заливки
      • Устранение неполадок с границами, затенением и графическими эффектами
    • Фоны и водяные знаки
    • Картинки и картинки
    • 3-D и тени
    • Текстовые поля
    • Линии и соединители
    • Графики и диаграммы
  • Печать
  • Безопасность и конфиденциальность
  • Массовые рассылки
  • Word и Интернет
  • Обмен информацией
  • Автоматизация задач и возможность программирования
  • Особенности языка
.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *