Согласно HTML стандартам, у HTML текста (от <html> до </html>, один файл .html) может быть только одна кодировка:
Примечание. То же самое, кстати, верно и для .XML - одна кодировка на документ, например,
<?xml version="1.0" encoding="windows-1251"?>
В отличие, скажем, от файлов MS Word, файл .HTML (и .XML) - это простой текстовый файл
Поэтому HTML файл, как и .TXT, может содержать знаки только одного
Например, нельзя в одном
HTML файле иметь буквы из Западно-Европейского
набора символов
и
(Character Set "Cyrillic", encoding: например, windows-1251)
Можно это пояснить на простом примере. Русской 'д' в кодировке
Поэтому если в простом текстовом файле, каким является .HTML, присутствует байт со значением 228,
мы увидим либо русскую 'д' во всех местах текста, где встречается этот код 228
(если страница объявлена как
либо увидим немецкую букву
(если страница объявлена как
но никак не обе буквы сразу на одной Web-странице.
Если charset для страницы не задан, то увидим ли на экране немецкую
букву или русскую зависит от текущей кодировки браузера. Например,
в
Примечание. Хочу напомнить, что английский алфавит имеет специальный статус. А именно, каждый набор символов (кириллица, японский, центрально-европейский,...) включает в себя, в дополнение к национальным буквам, символы ASCII, и значит, буквы английского алфавита.
Поэтому английский текст и русский текст на одной странице не означает смеси букв из разных наборов символов, не означает многоязычностистраницы - этоWindows-1251 страница (один charset), просто 1251 включает и английские буквы(точнее - ASCII символы), а не только кириллицу.
Как же тогда сделать страницу, где должны быть буквы из разных наборов символов?
Тут могут быть 2 варианта:
Вариант 1.
На самом деле страница не очень уж многоязычная - например, на русской странице
(HTML текст в кодировке Cyrillic windows-1251) надо только
Саму немецкую или греческую букву вставить нельзя, как было описано выше, но можно использовать некое её представление:
Такой способ, кстати, применим только к западно-европейским буквам (кодировка Western)
и к спец. символам (включая греческие буквы, используемые в математике и т.д.),
а например,
http://www.w3.org/TR/html401/sgml/entities.html
Самый простой способ найти нужное числовое значение:
- Пойти на страницу "Codepages" и найти нужную, скажем,
"Cyrillic, Windows codepage 1251".
Там под каждой буквой написано её юникодовое значение - в Hex, шестнадцатеричной системе, например, под'д' - 0434 - Теперь надо Hex 0434 в десятичную систему перевести - вызвать Калькулятор, например,
Start/Run - впечатать calc
В Калькуляторе - View/Scientific. Щёлкнуть на Hex и ввести 0434. Щёлкнуть наDec - получим нужное десятичноечисло - 1076.
Примечание. Оба способа, описанные выше, не работают в
Вариант 2.
Страница по-настоящему многоязычная - большие куски текста для каждого из языков
(и/или надо Netscape 4 поддерживать).
Естественно, никто не будет набирать много текста, вводя каждую букву
в виде ¨ или &#nnnn;.
А уж модифицировать (например, исправить ошибку в слове)
такой текст совсем затруднительно.
Тогда делают так:
Основное правило остается таким
То есть, есть следующие наборы символов (Character Sets), и надо выбрать один из них для создания многоязычной страницы:
Unicode Character Set включает в себя символы многих алфавитов, и европейских, и азиатских, поэтому этот набор символов как раз и подходит для создания многоязычных страниц. Ведь как и для всякого другого набора символов, в кодировках Unicode всем символам присвоен уникальный код, то есть, в любой кодировке набора символов Unicode буква 'д' и немецкая a-umlaut имеют разные коды, например, в UTF-8, где 8-ми битовые западно-европейские буквы с диакритикой и русские буквы представлены 2-х байтовыми комбинациями:
Именно поэтому в
Таким образом, на UTF-8 странице можно иметь русские, немецкие, греческие,
и т.д. буквы.
Поэтому многоязычные страницы делают в кодировке UTF-8, принятой для Unicode в Интернете.
Примечание. Если, в дополнение к европейским языкам, Вы хотите иметь на такой UTF-8 странице азиатские языки, скажем, японский или китайский или корейский, то:
- надо будет установить шрифт который включает символы и этих языков.
Дело в том, что шрифты Unicode редко включают всю таблицу символов, уж очень она велика, и размер файлов и так велик. Поэтому 'обычные' юникодовые шрифты, включенные вWindows - "Arial","Times New Roman" не имеют японских букв даже на японской Windows.То есть, надо найти и установить в системе такой юникодовый шрифт, который включает больше национальных символов, чем обычные юникодовые шрифты "Arial" или
"Times New Roman" используемые'по умолчанию' Вашим браузером для кодировки"UTF-8".
Вот, например, один такой юникодовый шрифт большого размера, где в дополнение к буквам европейских языков есть японские, китайские, корейские символы
(этот шрифт уже установлен в Вашей системе, если у Вас есть один из следующих Микрософтовских продуктов:MS Office вер. 2000 и выше, FrontPage 2000, MS Publisher вер. 2000 и выше):
"Arial Unicode MS" Если же у Вас нет этого шрифта, то надо найти похожий (т.е. включающий языки Дальнего Востока) например, вот на этой странице:
"Unicode fonts for Windows computers" .
Можно сгрузить (и установить в системе) один из шрифтов, описанных на этой странице, из них рекомендуют бесплатный шрифт
Bitstream CyberBit
- Затем надо указать именно этот шрифт в браузере:
- в Netscape вер. 4 и выше - выбрать этот шрифт для
Encoding: "Unicode" в менюEdit/Preferences/Appearance/Fonts Для версий 6 и выше (и Mozilla) это не обязательно делать - там работает новая опция
"Font Linking" - если в указанном шрифте не найден нужный символ (например, шрифт "Times New Roman" не содержит японских букв), тоNetscape 6 сам поищет нужный (содержащий японские символы) шрифт среди зарегистрированных в Windows и возьмёт символ оттуда.
- MS Internet Explorer вер. 5.0 и выше - проблема! В меню выбора шрифтов для кодировок
(Tools/Internet Options/Fonts - for Scripts)
просто нет Unicode.
В предыдущей версии - MS IE 4 - Unicode был в списке, и можно было указать шрифт для Unicode.Но это не очень критично (хоть и неудобно) - Internet Explorer тоже имеет опцию
"Font Linking" и найдёт, если надо показать японскую букву, шрифт типа"Arial Unicode MS" в системе.
Посмотрите мои тестовые UTF-8 страницы (там специально сделано
где есть и японский текст:
Разработчику надо найти редактор, который может создать HTML файл с текстом в кодировке
То есть, если потом посмотреть на Hex-значения букв (например, Hex в FAR через F3), то должны
быть значения кодировки UTF-8, например, немецкая
В таком, поддерживающем UTF-8 редакторе работаешь, как в
Если же нерусских букв немного, то можно их скопировать из окна утилиты Charmap
включённой в состав
Важно!
Естественно, как и для любой другой кодировки, надо, чтобы
страница 'заявила' о ней, то есть, надо чтобы browser 'знал', что для этой
страницы charset=utf-8.
Это делается либо путем настройки Web сервера, который вместе с самой
страницей шлет
<META http-equiv="content-type" content="text/html; charset=utf-8">
в самом 'теле' HTML файла
(как на моих тестовых UTF-8 страницах - я никак не могу сказать моему провайдеру Compuserve,
чтобы его сервер составлял нужные мне HTTP headers).
Если charset никак не задан, то тоже ничего страшного - пользователь сможет выбрать Unicode(UTF-8) в меню кодировок своего браузера.
Вот опробованные мной редакторы, где можно писать HTML и текст будет в кодировке UTF-8:
Файл надо потом сохранить в кодировке UTF-8 - через меню Save As.
После этого надо сделать ещё одно:
Так как это не специализированный HTML редактор, а простой текстовый редактор,
то, естественно, он не впишет строку
<META http-equiv="content-type" content="text/html; charset=utf-8">
Вам придется вписать такую строку 'вручную', если Вы не можете послать
Примечание. Если будущий UTF-8 текст будет содержать японский и т.п., то надо указать, что для кодировки UTF-8 программе следует использовать шрифт"Arial Unicode MS" .
Это делается вTools/Page Options/Default Font, где надо встать в списке на"Multilingual (UTF-8)" и в 2-х полях ниже выбрать этот шрифт.
Открыть новый документ и сразу же указать,
что создаваемый HTML текст будет в кодировке UTF-8:
Теперь можно вводить текст.
При сохранении файла на диске Front Page вставит строку с указанием
кодировки:
<META http-equiv="content-type" content="text/html; charset=utf-8">
Этот редактор очень удобен для создания/модификации многоязычных страниц в
кодировке UTF-8.
Как и при создании чисто русских страниц, в окне редактора не
должно быть указано конкретное имя шрифта, а должно быть то, что
там было по умолчанию:
Variable Width font
Вот как он работает:
и можно писать по-русски, по-немецки, ... - как в
Такой файл содержит юникодовый текст кодировки UTF-8 (русские буквы и акцентированные западно-европейские кодируются каждая 2-мя байтами).
При сохранении файла на диске Composer вставит строку с указанием
кодировки:
<META http-equiv="content-type" content="text/html; charset=utf-8">
Так как в UTF-8 русские буквы есть, то всё сработает нормально, поэтому просто проигнорируйте предупреждение, которое Composer при смене кодировку высвечивает.
1. Создание HTML текста 'с нуля'
Созданный HTML файл будет содержать нормальные буквы кодировки UTF-8.
Кроме того, Word вставит в файл строку с указанием кодировки (это можно увидеть,
использую опцию
<META http-equiv="content-type" content="text/html; charset=utf-8">
2. Конвертация обычного документа (.doc) в HTML
Созданный HTML файл будет содержать нормальные буквы кодировки UTF-8.
Кроме того, Word вставит в файл строку с указанием кодировки (это можно увидеть,
использую опцию
<META http-equiv="content-type" content="text/html; charset=utf-8">
Если кому интересны более детальные технические подробности насчет UTF-8 и создания многоязычных страниц, то вот 2 самых известных сайта на эту тему:
J.Korpela. Techniques for multilingual Web sites
A.Flavell. HTML Internationalization