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

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

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

s_gotoW3cHome Internationalization
 

Выбор и применение кодирования

Предполагаемая аудитория: шифровальщики XHTML / HTML (используя редакторы или скрипты), разработчики скриптов (PHP, JSP, и т.д.), шифровальщики CSS, Менеджеры веб-проектов, и каждый, кто не знаком с кодировкой символов и нуждается в помощи в вопросах выбора и применения кодировок символов.

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

Вопрос

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

Вводная информация

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

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

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

Ответ

Если вы имеете возможность, то используйте UTF-8

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

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

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

Почти нет препятствий к использованию Unicode в эти дни. Действительно, в августе 2010 года Google сообщили, что более 50% Веб-сайтов в их выборке из нескольких миллиардов страниц использовали UTF-8. Добавьте к этому ASCII веб-страницы (поскольку ASCII является подмножеством UTF-8), и цифра достигает около 70%.

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

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

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

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

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

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

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

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

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

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

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

Применение кодирования к вашему контенту

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

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

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

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

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

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

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

Почему браузер по-прежнему не распознает кодировку?

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

Любое назначение, в заголовке HTTP заменит информацию внутри страницы, что создает проблемы для вашего контента.

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

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

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

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

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

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

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

‎@webi18n

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

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

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

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

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