В отличии от программ электронной почты и чтения новостей, нет
никаких стандартов для русской кодировки на WWW. Основная причина
заключается в том, что компания Microsoft предоставляет
программы создания Web сайтов, которые знают о существовании только
одной русской кодировки cp1251, полностью игнорируя существование
других стандартов.
Настройки, описанные здесь, очень примитивны. Они позволят вам
видеть страницы в KOI8-R кодировке. Если ситуация как-то
изменится, я добавлю еще информации.
Начиная с версии 2.6, вы можете выбирать соответствующее
значение для дисплея -- display Character set
.
lynx версии 2.8 позволяет смотреть страницы в любой кодировке,
а не только
в KOI8-R.
Для наcтройки следует выйти в меню 'o'ptions
и проверить следующие настройки:
display (C)haracter set : KOI8-R character set
preferred document c(H)arset : koi8-r;q=1.0,windows-1251;q=0.5
Если русская (KOI8-R) страничка отображается Lynxом неверно,
то это означает, что страница неверно оформлена (см. раздел
Как правильно подготовить свою WWW страничку).
В последних версиях Lynx это обходится следующим образом:
в настройках нажмите '^A' и выберите koi8-r
(в основном отображаются заглавные буквы) или windows-1251
(в основном прописные буквы). В старых версий Lynx
после этого следует нажать @
(включить raw режим).
Для просмотра WWW в текстовом режиме можно использовать
links
(опять наши братья чехи на высоте). Поддержка кириллицы
уже встроена в программу -- надо только установить кодировку терминала
(в меню "Настройки") и кодовую страницу документа (в меню "Вид").
Убедитесь, что вы используете Netscape
версии 4.06 и выше.
Начиная с этой версии, Netscape
поддерживает кириллицу
гораздо лучше.
Основные настройки
Наконец-то свершилось, теперь Netscape поддерживает русские
кодировки правильным образом. Вам надо только правильно настроить
шрифты KOI8-R.
После этого, если например требуется показать документ, который
использует cp1251, Netscape автоматически перекодирует весь
документ в KOI8-R и правильно отобразит его, даже если
у него нет доступа к cp1251 шрифтам.
К сожалению, Netscape всегда будет перекодировать документы,
использующие cp1251, в KOI8-R, даже если ему доступны также и шрифты
для ISO-8859-5. Из за этой "глупости" вы сможете увидеть
нерусские кириллические буквы только если в системе инсталлированы
шрифты для ISO-8859-5 и нет ни одного шрифта KOI8-R.
Конечно, это решение неприемлемо, если вы используете KOI8-R. Мне
неизвестно, как заставить Netscape показывать украинскую букву
"г с чубом". Из стандартных кодировок она включена только в cp1251 и
KOI8-U.
Для того, чтобы правильно настроить KOI8-R в вашем Netscape, сделайте
следующее:
- В меню
Options/General Preferences/Fonts
выберите
Cyrillic (KOI-8)
кодировку.
- Выберите подходящие шрифты для этой кодировки -- например, выберите
Times(Cronyx)
как пропорциональный шрифт, и Courier(Cronyx)
--
как fixed.
- Сохраните настройки.
ВНИМАНИЕ: Все больше и больше появляется WWW страниц, оформление которых
сильно зависит от определенных шрифтов. Это в основном касается
страниц, созданных под и для MS Windows. Я настоятельно рекомендую
установить сервер шрифтов с поддержкой TrueType. С помощью него
некоторые
странички станут выглядеть гораздо лучше. Для выяснения подробностей
смотрите раздел
Использование шрифтов TrueType.
Некоторые WWW странички в интернете правильно отвечают на запрос
по поводу используемой при их создании кодировки. Другие требуют,
чтобы вы выбрали кодировку сами. Для того, чтобы это сделать, выберите
правильную опцию кодировки в меню Options/Document Encoding
.
Netscape версии 4.08 правильно отображает элементы форм, использующих
правильную кодировку (по крайней мере для большинства страниц,
которые я видел). Более старые версии делают это неправильно. Однако,
если по каким-то причинам вам надо использовать более старую
версию, или правильное отображение форм по какой-либо причине не работает,
то попробуйте сделать следующее:
- Скопируйте базу данных установок Netscape (обычно
Netscape.ad
) в ~/Netscape
- В файле, установите следующую опцию:
*documentFonts.charset*iso8859-1: koi8-r
Это вынудит все фреймы и элементы ввода использовать шрифты с
кодировкой koi8-r вместо заданных по умолчанию, а следовательно,
вы должны удостовериться в том, что вы уже установили такие
шрифты (см. раздел
Установка шрифтов для X Window).
Плохая новость об использовании этого трюка заключаются в том,
что если вы загружаете документ, который должен отображаться
с помощью шрифтов iso-8859-1
, то вместо этого он отобразится
с помощью koi8
шрифта. Иногда такие документы выглядят хуже.
Принципиально не русифицируемые вещи: у обоих нетскейпов (3 и 4)
будут трудности со страницами в кодировке, не соответствующей
'meta content-type'
в заголовке (традиционная проблема
серверов с выбором кодировок и авторов, пользующихся решениями от MS).
Не лечится ничем, кроме хака бинарников. Что еще хуже -- если в документе
явно указан шрифт, и такой шрифт, не дай Бог, у вас имеется (естественно, не
русифицированный), то им все и будет нарисовано. Решений два: или не иметь
в системе нерусифицированных шрифтов вовсе, или отключить в нетскейпе
автоматическую загрузку изображений, при этом "заодно", как ни странно,
отключится и показ шрифтов, указанных в документе. Нажав Alt-I, вы получите
возможность посмотреть картинки. Надеюсь, текст к этому моменту вы
уже запомнили ;).
Если вам нужно чего-то еще: Андрей А. Чернов -- это человек, который
знает больше о KOI8 в общем и в netscape в частности, чем другие люди.
Посетите его превосходную
KOI8 page
страницу, и скачайте заплату для файла ресурсов
Netscape, которая заставляет Netscape говорить по-русски так
хорошо, как это только возможно.
Этот раздел появился благодаря (фактически полностью состоит из)
статьям Андрея А. Чернова. Подробную информацию по этому вопросу
можно найти на страничке А.А. Чернова
KOI8-R - Russian Net Character Set.
Предисловие
Всемирное падение нравов началось с незначительной уступки
пользователям. Как известно, в стандартах по HTML/HTTP четко
сказано, что каждому документу должен соответствовать такой параметр,
как MIME-имя кодировки, и есть только один случай, когда его можно не
указывать -- если документ составлен в кодировке ISO 8859-1. Это
правило оказалось либо совершенно неизвестным, либо невыносимо сложным
для неподготовленных пользователей, так что они предпочли
проигнорировать его, и странички создавались просто набиванием
некоторых кодов.
Далее, компании Netscape начал поступать поток
претензий, что странички, набитые таким образом, не видны. Вместо
того, чтобы отослать ламеров к документации, компания Netscape делает
фатальный ход, минимально необходимый, чтобы все окончательно
разрушить -- вводит возможность выбора кодировки для страничек, где она
не указана!
Естественно, после такого уже никто не считает нужным указывать
кодировку документа; раньше останавливало хотя бы то обстоятельство,
что были затруднения с просмотром кривых страничек, требующие такой
достаточно сложной операции, как замена шрифта ISO 8859-1 на шрифт
используемой кодировки, теперь это препятствие было преодолено
благодаря попустительству Netscape. Вслед за Netscape этот фатальный
шаг делают и производители остальных броузеров, из соображений
выживания в конкурентной борьбе. Вернуть все назад невозможно из-за
тех же коммерческих соображений...
Тем самым, теперь выбор кодировки переносится с автоматического уровня
на пользовательский, отсюда все эти надоедливые "Выберите вашу
кодировку" и на страничках, и в броузерах.
В связи с общей коммерциализацией Интернет такие вещи, как
соответствие стандартам, уже перестают быть аргументом, и продукты, ещё
следующие им, потихоньку вытесняются в маргинальные области. В общем,
процесс повторяет происходящее в социуме, и будет продолжаться до тех
пор, пока участников не начнет тошнить. Этот порог отодвигается все
дальше и дальше благодаря удивительным способностям человеческого
организма к адаптации...
ВНИМАНИЕ! Иногда я слышу безответственные "мнения" по поводу того, что
указывать кодировку необязательно и не нужно: мол, пользователь у нас
не ленивый, выберет вручную. При этом "советчики" злостно умалчивают о
том, что надежного автоматического определения кодировки не существует
и не может существовать в принципе; так что вебмастера, не
проставляющие кодировку, с какой-то вероятностью ставят свои странички
под удар быть неверно истолкованными разного рода системами
автоматической обработки текста, например, поисковыми машинами. Это
все равно как вам бы предложили согласиться быть убитым с небольшой
вероятностью, скажем 3%. И зачем вам это нужно?
Русские странички не нарушая стандартов - это просто!
Здесь приведена по шаговая инструкция правильной подготовки ваших
русских страничек для WWW:
- Если у вас на страничках стоит выбор кодировок, выкиньте этот
кусок HTML кода: он вам больше не понадобиться -- отныне все будет
происходить автоматически.
- Если у вас странички не в кодировке KOI8-R, перекодируйте их туда
каким-нибудь конвертером -- смотрите раздел
Символьная перекодировка.
Ничего страшного не произойдет: если все
дальнейшее вы сделаете правильно, то в таком виде их по-прежнему
можно будет редактировать, скажем, в
Netscape Composer
без всякой заметной разницы. Мало
того, в таком виде ваши странички будут одинаково хорошо видны для
всех операционных систем без всяких переключателей кодировок,
превратившихся в бич русского WWW.
- Внимание! Данный пункт можно пропустить, если на вашем сервере
стоит Apache или какая-либо его разновидность (то есть в 90% случаев) --
в этом случае необходимая информация может быть задана в настройках
Apache.
Если же вы предполагаете частые переезды с сервера на сервер с
неизвестными HTTPD, следуйте указаниям пункта.
- Спросите вашего веб-мастера, что за штука стоит у вас в качестве
веб-сервера, если он ответит:
- что Apache или Apache/RUS:
в самом верхнем каталоге, содержащем ваши странички,
создайте файл с именем .htaccess
, доступный всем на
чтение с такими строчками:
- Для версий Apache, начиная с 1.3.12:
AddDefaultCharset koi8-r
AddLanguage ru .html .txt
- Для версий Apache, начиная с 1.3.10:
AddCharset koi8-r .html .txt
AddLanguage ru .html .txt
- Для более старых версий Apache (или если версия вам
неизвестна):
AddType "text/html; charset=koi8-r" .html
AddType "text/plain; charset=koi8-r" .txt
AddLanguage ru .html .txt
Если файл .htaccess
уже есть, просто добавьте туда эти
строчки.
Записанное в .htaccess
распространяется на все подкаталоги
вниз по дереву.
Подразумевается, что ваши HTML документы заканчиваются на
.html
; если они заканчиваются на .htm
, поменяйте
.html
на .htm
в предлагаемом образце.
При таких настройках не обязательно (но можно) указывать
язык тагом <HTML LANG=ru
, как это было описано выше.
Указание
языка внутри HTML документа имеет приоритет над указанием
для сервера.
Так как для текстовых (*.txt
) документов никак нельзя
указать язык внутри документа, указание для сервера -- это
единственная альтернатива.
Если у вас на сервере стоит Apache/RUS, то
рекомендуется
отключить всякую автоматическую перекодировку, добавив в
.htaccess
директиву
CharsetTurnOff On
(работает начиная с версии Apache/RUS PL20).
ПРЕДУПРЕЖДЕНИЕ: в последних версиях Apache обработка
файлов .htaccess
по умолчанию выключена в главной
конфигурации (директивой AllowOverride None
), т.е. ваши
установки не будут иметь никакого эффекта. В этом случае
попросите вебмастера включить такую обработку для вашего
каталога, добавив директиву
AllowOverride +FileInfo
в соответствующую секцию <Directory ...>
конфигурации Apache.
- что NCSA:
в каждом каталоге, содержащем ваши странички, заведите
файл с именем .htaccess
, доступный всем на чтение с
такими строчками:
AddType text/html;\ charset=koi8-r .html
AddType text/plain;\ charset=koi8-r .txt
Если файл .htaccess
уже есть, просто добавьте туда эти
строчки.
Подразумевается, что ваши HTML документы заканчиваются на
.html
; если они заканчиваются на .htm
, поменяйте
конец строки на .htm
соответственно.
- что CERN:
для каждого вашего каталога с русскими страничками
создайте подкаталог .web
, в него положите файлы с
именами, сконструированными добавлением суффикса .meta к
именам в главном каталоге. Каталог .web
и файлы в нем
должны быть доступны всем на чтение. Например, файлу
index.html
соответствует файл
.web/index.html.meta
и т.д.
Каждый такой файл должен содержать следующую строчку
Content-Type: text/html; charset=koi8-r
(для HTML файлов) или
Content-Type: text/plain; charset=koi8-r
(для текстовых файлов).
- что какой-нибудь другой HTTP сервер:
сперва попробуйте связать расширения .html
и
.txt
по аналогии с решениями выше; если вы не знаете, как
это сделать в вашем HTTP сервере, вам придётся
редактировать непосредственно сами ваши странички: в
секцию <HEAD>
каждого HTML документа вставьте самой
первой директивой следующий таг:
<META HTTP-EQUIV="Content-Type"
CONTENT="text/html; charset=koi8-r">
Т.е. каждый ваш документ должен будет выглядеть примерно
так:
<HEAD>
<META HTTP-EQUIV="Content-Type"
CONTENT="text/html; charset=koi8-r">
<TITLE>Заголовок странички</TITLE>
</HEAD>
<BODY>
Содержимое странички
</BODY>
К сожалению, в этом случае невозможно указание кодировки
для текстовых файлов (*.txt
).
На этом все готово. При просмотре ваших страничек никто теперь не
увидит мусора из умляутов вместо нормальных русских букв, и не
придется больше выбирать кодировки!
Проверка правильности кириллизации
Как проверить, удалось ли проставить кодировку и язык в HTTP заголовке?
Допустим, ваша страничка называется
http://www.yourserver.ru/yourpath/yourpage.html
- Наберите:
telnet www.yourserver.ru 80
- После соединения наберите:
HEAD /yourpath/yourpage.html HTTP/1.0
(возможно, в некоторых системах придётся набирать вслепую)
- Нажмите Enter два раза. Вы увидите HTTP заголовок.
- Найдите в нем поле
Content-Type
и проверьте, что там стоит не
просто text/html
, а text/html; charset=koi8-r
- Если вы на сервере установили русский язык для ваших страничек, в
заголовке должно присутствовать поле
Content-Language: ru
Полезные советы
А совсем старые версии броузеров не показывают русских букв при таком
способе, что делать?
Посоветовать пользователю сменить версию броузера на более
новую. В качестве прецедента, вспомните, что
было с вводом прогрессивных JPEG, или анимированных GIF? Все
поменяли версии на новые, никто не жаловался и не делал две
копии страничек, одну с GIFами, а другую -- без, а потом
предлагал бы их выбрать...
А нельзя сделать так, чтобы 1) старые версии работали, 2) новые версии
работали, и 3) чтобы пользователю было удобно?
Нельзя. Из этой тройки можно сделать вместе только два, на
выбор. Из-за ненависти к пользователю у нас часто делают
(1) чтобы старые версии работали и (2) чтобы новые версии
работали (при этом стандартам не соответствует), я же
предпочитаю (3) чтобы пользователю было удобно и (2) чтобы
новые версии работали (при этом стандартам
соответствовало), а вы?
Вперед
Назад
Содержание