Кодування символів в HTML

Мова гіпертекстової розмітки HTML використовується з 1991 року, але версія 4.0 (1997) була першою, де уявлення символів, відмінних від ASCII (тобто, англійської мови), досить стандартизовано.


1. Визначення кодування засобами HTTP

При відображенні HTML-сторінки браузерами останнім потрібно повідомити в якому кодуванні збережена сторінка. Для цього можна скористатися двома методами:

При передачі документа HTML за HTTP (скажімо, в WWW) набір символів документа задається в заголовку HTTP, наприклад для тексту в російській варіанті кодування КОІ-8 :

 Content-Type: text / html; charset = koi8-r 

Інформацію про кодуванні можна вставити в сам документ HTML, використовуючи тег meta в розділ HTML-документа. Наприклад, у разі кодування UTF-8 тег meta буде виглядати наступним чином:

  

У стандарті для мови HTML 5 мета тег інформує браузер про кодування сторінки записується відмінно від правил прийнятих в більш ранніх стандартах HTML. Так приклад наведений вище в HTML 5 буде виглядати наступним чином:

  

Такий спосіб непогано працює для файлів, але при видачі документа по HTTP його успішність залежатиме від дій HTTP-сервера, чи побажає він вказати цю інформацію в заголовку. Згідно HTTP/1.1, відсутність вказівки charset в заголовку прирівнюється до використання набору символів ISO 8859-1.

Тобто, пріоритетним фактором для браузера з питання "в якому кодуванні відображати документ" може бути переданий сервером заголовок. У цьому випадку браузер зобов'язаний ігнорувати відповідні директиви в теге META.


2. Налаштування заголовків, переданих сервером

1. Можна використовувати файл . Htaccess. У ньому потрібно вказати директиви сервера відносно кодувань за замовчуванням: AddDefaultCharset UTF-8 У наведеному прикладі кодуванням за замовчуванням в заголовках сервера буде призначена UTF-8.

У разі кодування windows-1251 : AddDefaultCharset windows-1251

Дані директиви файлу. Htaccess найбільш часто застосовні. Але в кожному окремо взятому випадку можуть і не спрацювати. Все залежить від налаштувань сервера.

Є менш популярні директиви, дія яких спрямована на відключення заголовків сервера. При їх відключенні браузер буде вибирати кодування в залежності від вказівок в теге МЕТА.

charsetdisable on

AddDefaultCharset Off

Найчастіше, проблеми відображення кодувань пов'язані з тим, що застаріле ПЗ для Web (наприклад, сайт, CMS і т. д.) використовує національну кодування в той час як сервер налаштований для роботи з UTF-8. У цьому випадку, примусово зазначається мова, кодування необхідна ПО (наприклад, cp1251) для web-сервера, і (як правило) інтерпретатора PHP.

DefaultLanguage ru

AddDefaultCharset windows-1251

php_value default_charset "cp1251"

2. Директива php-кодом: В начале php-файла можно указать php-код, который передаст инструкции браузеру по выбору кодировки:


3. Визначення кодування засобами XML

У XHTML можна також вказувати кодування в преамбулі XML, наприклад:

  

4. Мнемоніки HTML і коди Unicode

Символи, що мають спеціальні назви (див. Мнемоніки в HTML), можуть бути закодовані у вигляді &entity;, наприклад:

  • "" → ""
  • "Α" → "α"
  • "<" → "<"
  • "> "→ ">"
  • "" → "" (пробіл)

У той же час всі символи можуть бути також закодовані в числовому позначенні з використанням десяткового (& # DD ;) або шістнадцяткового (& # xHHHH ;) коду Unicode.

  • "" = "" → ""
  • "Α" = "α" → "α"

Правильний браузер буде відображати символи, задані вищеназваним шляхом, незалежно від поточної кодування документа і, зокрема, навіть у випадку, коли такі символи нею не можуть бути охоплені. Таким чином, можливий японський текст в HTML-документі, написаному в Windows-1251, і т. д.

Кодування символів
Основи → алфавіт текст ( файл дані) набір символів конверсія
Історичні кодування → Докомп.: СЕМАФОРНА (Макарова) Морзе Бодо МТК-2 Комп.: 6 біт УПП RADIX-50 EBCDIC ( ДКОИ-8) КОІ-7 ISO 646
сучас-
менное
8-бітове
представ-
ление
символи ASCII ( керуючі друковані) не-ASCII ( псевдографіка)
8біт. код.стр. Різні → Кирилиця: КОІ-8 ГОСТ 19768-87 MacCyrillic
ISO 88591 (лат.) 2 3 4 5 (кір.) 6 7 8 9 10 11 12 13 14 15 () 16
Windows → 1250 1251 (кір.) 1252 1253 +1254 один тисячі двісті п'ятьдесят п'ять тисячу двісті п'ятьдесят-шість один тисяча двісті п'ятьдесят сім 1258 | WGL4
IBM & DOS → 437 850 852 855 866 "альт." ( МІК) ( НДІ ЕОМ)
Багато-
байтниє
Традиційні → DBCS ( GB2312) HTML
UnicodeUTF-16 UTF-8 список символів ( кирилиця)
Пов'язані
теми →
інтерфейс користувача розкладка клавіатури локаль переклад рядка шрифт кракозябри трансліт нестандартні шрифти текст як зображення Утиліти: iconv recode