Как читать кириллицу на Интернете и пересылать по e-mail

(некоторые советы и пояснения)

Данный документ не претендует на роль всеобъемлющей инструкции и отражает личный опыт автора. В нем не рассматриваются кодировки кириллицы, специфичные для конкретных языков, за исключением русского и украинского. В разделе 'Литература' можно найти ссылки на другие материалы по этому вопросу. Автор будет признателен за любые дополнения, исправления или комментарии .

Дата последней редакции: 2 июля 2000 г.

СОДЕРЖАНИЕ

При обмене текстовыми сообщениями по электронной почте (в отличие от факса) пересылаются не изображения букв, а их цифровые коды. Чтобы адресат мог правильно прочесть отправленное ему письмо, нужно, чтобы на его компьютере и на компьютере отправителя одним и тем же кодам соответствовали одни и те же буквы (иначе говоря, чтобы отправитель и получатель письма пользовались одной и той же кодировкой текста). Если же они пользуются различными кодировками, нужно, чтобы на каком-то этапе прохождения от отправителя к адресату письмо было правильным образом перекодировано – так, чтобы полученные коды были другими, но соответствовали на компьютере получателя тем же буквам и символам, что и исходные коды на компьютере отправителя. С латинскими буквами таких проблем обычно не возникает, поскольку используемый для их кодирования стандарт является общепринятым. Зато для букв кириллицы приходится иметь дело с несколькими различными кодировками. Чтобы понять, какие из-за этого могут возникать проблемы и как их решать, нужно иметь представление об основных кодовых таблицах кириллицы и о том, что может происходить с кириллицей при прохождении сообщения через почтовые программы и почтовые серверы.

Кодовая таблица ASCII и наиболее распространенные кодировки кириллицы

7-битная кодировка ASCII

Для кодировки букв латинского алфавита общепринятым является стандарт ASCII (American Standard Code for Information Interchange - американский стандартный код обмена информацией). В нем буквам латинского алфавита, а также цифрам, знакам препинания и основным символам соответствуют цифровые коды, лежащие в диапазоне от 32 до 127. 'Латинские' тексты еще называют 7-битными. поскольку для их кодирования достаточно семи двоичных разрядов. (Возведение двойки в седьмую степень дает 128, поэтому семью двоичными разрядами можно закодировать 128 различных букв и символов). Если такой текст пересылается по электронной почте, то его кодировка обычно указывается в служебных полях письма строкой: Content-Type: text/plain; charset='us-ascii'

    Наиболее распространенные 8-битные кодировки кириллицы

Коды, лежащие в диапазоне от 128 до 255 ('8-битные коды' - они состоят уже из восьми двоичных разрядов), используются для представления дополнительных или 'национально-специфичных' символов. Существует большое количество кодовых таблиц (их еще называют 'кодовыми страницами'), различающихся в зависимости от используемой операционной системы и от ее настройки на конкретные языки. Чтобы правильно определить букву или символ, которым соответствует конкретный код, нужно знать, какая кодовая страница используется в данном случае для кодирования текста.

В среде Windows для работы с русскоязычными текстами обычно используется кодовая страница 1251 (ее иногда упрощенно называют 'кодировка Windows '). Например, если набрать текст в MS Word for Windows, пользуясь 'обычными' кириллическими шрифтами для Windows, и сохранить его как 'Text Only', то полученный текстовый файл будет записан именно в этой кодировке.

В операционной системе DOS для работы с русскоязычными текстами наиболее распространена кодовая страница 866. известная также под названием 'модифицированной альтернативной кодировки' (упрощенно ее называют 'Альтернативная' или 'кодировка DOS'). При 'русских' региональных настройках Windows сохранение текста из MS Word for Windows в виде 'MS-DOS Text' запишет текстовый файл именно в этой кодировке. Чтобы правильно считывать такие файлы в MS Word for Windows, нужно включить через меню Tools/ Options/ General/ установку 'Confirm conversion at open', а при открытии файла в ответ на запрос программы указывать преобразование из 'MS-DOS Text'.

В операционных системах семейства UNIX для русскоязычных текстов обычно используется кодовая

www.nagual.pp.ru/

ache/koi8.html ).

Под Windows тексты в кодировке КОИ-8 можно читать и распечатывать, используя шрифты типа КОИ-8 для Windows. Однако для того, чтобы набирать тексты в этой кодировке, нужно иметь специальную раскладку клавиатуры.

На компьютерах типа Макинтош используется своя собственная кодировка кириллицы, известная как

Кодировка кириллицы ISO-8859-5 (в просторечии 'ISO') известна также под названием 'основная кодировка DOS ' (хотя фактически 'основной' для DOS давно уже стала 'альтернативная' кодировка 866). Преимуществом кодировки ISO-8859-5 является строго алфавитное размещение в ней русских букв, удобное для сортировки записей в базах данных.

'Транслит ' (транслитерация) - это не кодовая страница, это просто замена букв кириллицы 'фонетически аналогичными' латинскими буквами и их комбинациями. Транслит используют как крайнее средство в том случае, если на компьютере пользователя (или адресата письма) нет кириллических шрифтов или раскладок клавиатуры.

Ниже показаны таблицы размещения символов в различных кодировках кириллицы

Кодовая страница Windows-1251

Кодовая страница 866 (DOS)

Кодовая страница KOI8-R

Макинтош-кодировка кириллицы

Кодировка ISO-8859-5

'Унифицированная' кодировка UNICODE

www.unicode.org ). Естественно, такая таблица должна быть достаточно большой, поэтому для кодировки каждого ее элемента отводится уже не 8, а 16 двоичных разрядов, что позволяет кодировать максимум 65536 элементов. Таким образом, 'унификация' кодов букв достигается за счет двукратного увеличения размера текстовых файлов. Стандарт Unicode согласуется со стандартом ISO/IEC 10646-1, определяющим так называемый 'Универсальный набор символов' - Universal Character Set (UCS) и его двухбайтное (два байта на каждый символ) представление UCS-2; поэтому кодировку Unicode иногда называют также UCS-2. Однако протоколы передачи данных по сети Интернет и электронной почте не позволяют передавать 16-битные символы; для пересылки текстов, записанных в Unicode, используются специальные 7-битные или 8-битные представления Unicode  UTF-7 (RFC2152 ) или UTF-8 (RFC2279 ) (UTF означает 'UCS Transformation Format'). Новые версии Веб-браузеров (и связанных с ними почтовых программ) - например, Netscape Communicator v.4.* или Microsoft Internet Explorer v.4.* или 5.*, 'понимают' кодировки UTF-7 и UTF-8. Использование таких представлений Unicode может стать радикальным решением проблемы с 'вавилонской башней' различных кодировок, но пока что  лишь немногие почтовые программы (например, Outlook Express, Netscape Messenger или Forte Agent) могут автоматически декодировать UTF-7 и UTF-8.

Unicode в Windows 95/98/2000 и MS Office 97/2000

ourworld.compuserve.com/homepages/PaulGor/ ).

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

www.referats.corbina.ru/referats/00/CYRFONTS.ZIP .

Что касается обратной совместимости, то, например, специальную программу-конвертор, позволяющую открывать в Word 6.0 и 7.0 файлы, записанные в формате Word 97, можно найти на ftp://ftp.microsoft.com/Softlib/MSLFILES/wrd97cnv.exe ; однако некоторые документы Word97 со сложным форматированием не удается открыть в Word 6.0 и 7.0 даже с помощью этого конвертора.

www.glasnet.ru/

kazarn/fontsmain.htm ).

7-битные представления 8-битных текстов: 'Quoted-printable' и 'base64'

8-битные тексты можно пересылать по электронной почте в своем исходном 8-битном виде; при этом в

служебных полях письма обычно указывается: Content-Transfer-Encoding: 8bit. Однако надо иметь в виду, что не все почтовые серверы (особенно в '7-битном' англоязычном мире) правильно обрабатывают 8-битные тексты. Некоторые из них вообще просто 'обрезают' восьмой бит, уменьшая все 8-битные коды на 128. Поэтому в современных почтовых программах предусмотрен режим преобразования пересылаемых 8-битных текстов в 7-битную форму  - в расчете на то, что почтовая программа получателя автоматически выполнит обратное преобразование и восстановит исходый текст. (Например, в программе Eudora Pro v.2.2 и 3.* такой режим включается через меню Tools/ Options/ Sending Mail/ May Use Quoted-Printable). В представлении 'quoted-printable ' стандартные 7-битные символы оставляются без изменений, а 8-битные символы заменяются на последовательность из символа '=' и пары латинских букв и/или цифр, изображающих их шестнадцатиричный код. В результате отсылаемый текст может выглядеть примерно так:

=DD=EB=E5=EA=F2=F0=EE=ED=ED=FB=E5=F2=E0=E1=EB=E8=F6=FB.

а в служебных полях письма почтовая программа укажет: Content-Transfer-Encoding: quoted-printable .

Другим распространенным методом 7-битного представления 8-битных текстов является 'base64 '. При его использовании почтовая программа указывает в служебных полях письма: Content-transfer-encoding: base64 .

Современные почтовые программы при получении письма, где текст представлен в виде base64 или

quoted-printable, автоматически восстановят его исходную 8-битную форму; тем же получателям, чьи почтовые программы не поддерживают такое преобразование, придется расшифровывать текст с помощью специальных декодирующих программ.

Как настроить браузер для просмотра Web-страниц на русском языке

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

При одном подходе, документ доступен на Веб-сервере в нескольких различных кодировках, так чтобы посетители Веб-сайта могли выбрать наиболее удобный для себя вариант. (При этом не обязательно держать на сервере отдельную копию документа для каждой кодировки; на самом деле, сервер часто хранит лишь один экземпляр документа в какой-нибудь одной кодировке, зато доступ к этому документу возможен через несколько 'портов', которые выполняют различные перекодировки). Так или иначе, на Веб-странице есть меню выбора кодировки; в это меню наверняка будут включены кодировки WIN-1251 и KOI8-R, а иногда и другие -- DOS (866), ISO-8859-5, Macintosh и 'транслит'.

Другой подход используется, например, Веб-сервером 'Russian Apache ', который пытается определить 'родную' кодировку обращающегося к серверу браузера и затем 'отдает' пользователю запрашиваемый документ именно в этой кодировке. При этом на Веб-странице может и не быть меню выбора кодовой страницы. Если пользователь работает в операционной системе Windows, то он, скорее всего, увидит документ в кодировке Win-1251.

Третий подход -- сделать документ доступным в какой-нибудь одной кодировке, в расчете на то, что пользователь должен уметь правильно настроить свой браузер для чтения текстов в этой кодировке. Многие русскоязычные Веб-страницы доступны либо только в KOI8-R, либо только в Win-1251.

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

Имейте также в виду, что обычно легче настроить на чтение КОИ-8 браузеры, работающие под Windows, чем настроить на Win-1251 браузеры, работающие под Unix. Некоторые пользователи Unix вообще с предубеждением относятся к Веб-страницам, доступным только в кодировке Win-1251 и считают, что вряд ли там может быть что-нибудь заслуживающее внимания.

Для чтения русскоязычных Веб-страниц достаточно 'научить' Ваш браузер понимать кодировки KOI-8 и Windows-1251 - другие кодировки кириллицы вряд ли можно найти на Интернете в качестве единственного варианта кодировки Веб-страницы. (Правда, на Интернете можно найти множество русскоязычных текстовых файлов в кодировке DOS - но они обычно предназначены для загрузки, а не для просмотра в режиме online).

Netscape Navigator (v.2,3)

www.relcom.ru/Russification/WinNetscape. и здесь мы остановимся на ней лишь вкратце.

Для настройки Netscape Navigator (версия 3) нужно войти в меню Options/ General Preferences/ Fonts и

www.relcom.ru/Russification/WinNetscape/ForWWW.zip. В дальнейшем нужно через меню Options/ Document Encoding выбирать кодировку Cyrillic для просмотра Web-страниц в кодировке Windows-1251 и кодировку Cyrillic (KOI-8) для просмотра Web-страниц в кодировке КОИ-8.

Если у Вас все еще установлен Netscape Navigator (версия 2), давно пора заменить его на более 'свежую' версию. Если же у Вас нет такой возможности, можно аналогичным образом установить шрифты типа КОИ-8 для кодировки 'Latin 2' и шрифты типа Windows-1251 для кодировки 'Korean' (в меню этой версии Netscape Navigator'а нет кириллических кодировок). После этого выбирайте из меню Options/ Document Encoding 'Latin 2' для просмотра текстов в кодировке КОИ-8 и 'Korean' для просмотра текстов в кодировке Windows-1251.

  Microsoft Internet Explorer (v.3,4,5)

В отличие от Netscape Navigator’а, Microsoft Internet Explorer (версия 3) для просмотра Web-страниц в кодировках КОИ-8 и Windows-1251 не нуждается в установке каких-либо специальных шрифтов. Достаточно через меню View/ Options/ General/ Font Settings выбрать кириллический набор символов, а MIME-Encoding установить на Windows-1251 или KOI8-R. При просмотре Web-страниц можно щелкнуть левой кнопкой мыши по иконке, находящейся в правом нижнем углу окошка Internet Explorer’а v.3, и выбрать нужную кодовую страницу из всплывающего меню. (Если этой иконки не видно, скорее всего, в системе не установлен Multilanguage Support - нужные файлы можно загрузить с ftp://ftp.microsoft.com/Softlib/MSLFILES/lang.exe ). При этом Internet Explorer выполняет соответствующую перекодировку исходного текста. Тот же принцип сохранен и в следующих версиях - Internet Explorer v.4 и 5, которые, кроме Windows-1251 или KOI8-R, поддерживают еще несколько кодовых страниц кириллицы, а также 7-битные и 8-битные представления Unicode UTF-7 и UTF-8. В Internet Explorer v.5 нужная кодировка выбирается через меню View/ Encoding (если нужной кодировки нет в списке, нужно выбрать пункт 'More'). Шрифт, используемый для показа кириллицы, выбирается через меню Tools/ Internet Options/ General/ Fonts.

  Netscape Communicator (v.4.*)

www.relcom.ru/Russification/WinNetscape. Пожалуй, обработка кириллицы в Netscape Communicator сопровождается бОльшим количеством ошибок по сравнению с MS Internet Explorer. Иногда бывает, что кириллица на экране нечитабельна даже несмотря на то, что все настройки заданы совершенно правильно. Если такое случается, попробуйте следующие варианты:
  • переключите кодировку на какую-нибудь другую, а потом назад
  • перезагрузите документ (reload)
  • посмотрите HTML-код документа (View/ Page Source) и попробуйте понять причину проблемы (возможно, в заголовке документа неправильно указана его кодировка (charset), или сам текст неправильно закодирован)
  • если проблема все равно не решается, попробуйте прочитать тот же документ в Internet Explorer вместо Netscape.
HTML-документы с явным указанием кодировки (charset=. )

Если в заголовке HTML-документа явно указывается кодировка при помощи строки типа

<META HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=windows-1251'>

браузер должен автоматически включить режим показа документа в данной кодировке. В этом случае попытки задать кодировку 'вручную' (через меню браузера) могут не срабатывать. Если при этом указанная в заголовке кодировка не соответствует той, которая фактически используется в тексте, документ может стать нечитабельным. Вообще, если браузер не может правильно прочесть текст, попробуйте просмотреть исходный HTML-код (через меню View/ Page source и т.п. в зависимости от конкретного браузера). Часто это помогает понять суть проблемы. В случае неправильно указанной кодировки можно сохранить документ у себя на диске, а потом отредактировать его, исправив charset либо перекодировав текст.

Вообще говоря, явное указание кодировки в заголовке HTML-документа нужно использовать очень внимательно. Помните:

1. Лучше совсем не указать charset, чем указать его неправильно.

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

3. Если Вы конвертируете HTML-документ с явным указанием кодовой страницы в другую кодировку, не забудьте исправить в заголовке и название кодировки.

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

5. Если Ваша страница сделана в кодировке Win-1251, даже с явным указанием charset=windows-1251. не думайте, что теперь она будет читабельна абсолютно для всех. Многие версии браузеров, работающих под операционной системой UNIX, не поддерживают эту кодировку.

Кроме того, если Вы хотите, чтобы русский текст на Вашей Веб-странице был читабелен для всех, никогда не используйте явное задание шрифта через таг FONT FACE=.. Это считается дурным тоном, поскольку может создать проблемы длях тех, у кого на компьютере шрифт с таким названием не русифицирован (либо его вообще нет).

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

В каком виде отправлять письма?

Источник: gn.org.ua

Категория: Программное обеспечение

Похожие статьи: