Ускоряющая клавиша n предназначена для пропусков при навигации по страницам. Пропуск для перехода на начало контента.

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

Переводчик: Alexandr, Art life

s_gotoW3cHome Internationalization
 

Кодировка символов для начинающих

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

Вопрос

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

Ответ

Во-первых, почему вы должны быть внимательными?

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

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

mojibake1.gif

но фактически он может показываться вот так:

mojibake2.gif

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

Так что же такое кодирование символов?

Слова и предложения в тексте создаются из символов. Примеры символов включают букву á Латинского алфавита или Китайский иероглиф или символ Деванагари .

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

Символы сгруппированые в набор символов (также называется репертуар). Затем его назвали кодировкой символов когда каждому символу присваивается определенный номер, так называемая code point. (точка кода). Эти точки кода будут представлены на компьютере одним или несколькими байтами.

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

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

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

Например, в кодировке символов ISO 8859-1 (также известной как Latin1) значение десятичной точки кода для буквы é - 233. В ISO 8859-5, Та же самая точка кода отражает такой символ Кириллицы, как щ.Эти наборы символов содержат меньше 256 символов и отображают точку кода непосредственно в байтах. Так точка кода со значением 233 представляется одним байтом со значением 233. Однако заметим, что этот байт может отображать или é или щ, в зависимости от контекста.

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

UTF-8 - наиболее распространенный способ отображения текста Unicode на веб страницах. Но UTF-8 - единственный возможный способ отображения символов Unicode. Иными словами, одна точка кода в наборе символов Unicode может фактически отображатся разной последовательностью байтов, в зависимости от кодировки, что была использована для документа. Точки кода Unicode могут отображаться байтами при использовании любой из данных кодировок: UTF-8, UTF-16 или UTF-32. Такой символ Деванагари, как , с точкой кода 2325 (занимающий 915 место в шестнадцатеричной системе счисления), будет отображаться двумя байтами при использовании кодировки UTF-16 (09 15), тремя байтами в UTF-8 (E0 A4 95), или четырьмя в UTF-32 (00 00 09 15).

* Большинство байтов в наше время состоит из 8 бит. Есть только 28 (то есть 256) уникальных способа сочетания 8 бит.

Отметим также, числовые значения точек кода, как правило, выражаются в шестнадцатеричной системе счисления - то есть основанные на 16. Например, 233 в шестнадцатеричной форме будет E9. Значение точки кода в Unicode, как правило, записывается в виде U+00E9.

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

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

Как приспосабливаются к этому шрифты?

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

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

Обусловленный шрифт как правило, охватывает один набор символов, или только подмножество всех символов в наборе, как в случае большого набора символов Unicode. Если ваш шрифт не имеет глифа для отдельного символа, некоторые приложения будут искать пропущенный символ в других шрифтах вашей системы (что будет означать, что глиф будет отличаться от текста, будет выглядеть как шрифт ransom note). В противном случае вместо него вы обычно будете видеть квадрат, знак или иной символ. Например:

mojibake3.gif

Как это на меня влияет?

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

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

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

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

Следующие ссылки обеспечивают в некоторой степени дальнейшее знакомство с этими темами.

Кстати говоря

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

Выскажите своё мнение (по-английски).

Подпишитесь на ленту новостей RSS.

Новые публикации

Новости главной страницы

Twitter (Новости главной страницы)

‎@webi18n

Дополнительные материалы

Автор: Richard Ishida, W3C. Переводчик: Alexandr, Art life.

Допустимый XHTML 1.0!
Допустимый CSS!
Кодировка UTF-8!

Перевод с английского: 2010-09-08. Последнее внесение изменений в перевод: 2011-03-05 21:00 GMT

Для просмотра истории внесения изменений нажмите qa-what-is-encoding в блоге i18n.