В отличие от программ электронной почты и чтения новостей, нет никаких стандартов для русской кодировки на 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.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:
Netscape Composer
без всякой заметной разницы. Мало
того, в таком виде ваши странички будут одинаково хорошо видны для
всех операционных систем без всяких переключателей кодировок,
превратившихся в бич русского WWW.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
на таг
<HTML LANG=ru>
,
это укажет, что ваш документ на русском языке, и облегчит
жизнь поисковикам.в самом верхнем каталоге, содержащем ваши странички,
создайте файл с именем .htaccess
, доступный всем на
чтение с такими строчками:
AddDefaultCharset koi8-r AddLanguage ru .html .txt
AddCharset koi8-r .html .txt AddLanguage ru .html .txt
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 обработка
файлов .htaccess
по умолчанию выключена в главной
конфигурации (директивой AllowOverride None
), т.е. ваши
установки не будут иметь никакого эффекта. В этом случае
попросите вебмастера включить такую обработку для вашего
каталога, добавив директиву
AllowOverride +FileInfo
<Directory ...>
конфигурации Apache.
в каждом каталоге, содержащем ваши странички, заведите
файл с именем .htaccess
, доступный всем на чтение с
такими строчками:
AddType text/html;\ charset=koi8-r .html AddType text/plain;\ charset=koi8-r .txt
Если файл .htaccess
уже есть, просто добавьте туда эти
строчки.
Подразумевается, что ваши HTML документы заканчиваются на
.html
; если они заканчиваются на .htm
, поменяйте
конец строки на .htm
соответственно.
для каждого вашего каталога с русскими страничками
создайте подкаталог .web
, в него положите файлы с
именами, сконструированными добавлением суффикса .meta к
именам в главном каталоге. Каталог .web
и файлы в нем
должны быть доступны всем на чтение. Например, файлу
index.html
соответствует файл
.web/index.html.meta
и т.д.
Каждый такой файл должен содержать следующую строчку
Content-Type: text/html; charset=koi8-r
Content-Type: text/plain; charset=koi8-r
сперва попробуйте связать расширения .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
(возможно, в некоторых системах придётся набирать вслепую)
Content-Type
и проверьте, что там стоит не
просто text/html
, а text/html; charset=koi8-r
Content-Language: ru
А совсем старые версии броузеров не показывают русских букв при таком способе, что делать?
Посоветовать пользователю сменить версию броузера на более новую. В качестве прецедента, вспомните, что было с вводом прогрессивных JPEG, или анимированных GIF? Все поменяли версии на новые, никто не жаловался и не делал две копии страничек, одну с GIFами, а другую -- без, а потом предлагал бы их выбрать...
А нельзя сделать так, чтобы 1) старые версии работали, 2) новые версии работали, и 3) чтобы пользователю было удобно?
Нельзя. Из этой тройки можно сделать вместе только два, на выбор. Из-за ненависти к пользователю у нас часто делают (1) чтобы старые версии работали и (2) чтобы новые версии работали (при этом стандартам не соответствует), я же предпочитаю (3) чтобы пользователю было удобно и (2) чтобы новые версии работали (при этом стандартам соответствовало), а вы?