Русская кириллица в Интернете

    • Введение
    • Кодировки (encodings)
    • Раскладки клавиатуры (keyboard layouts)
    • Шрифты (fonts)
    • Уникод (Unicode)
    • Проблемы и решения до Уникода
    • Проблемы и решения вокруг Уникода

    Введение

    Общаться в Интернете почти на любом языке‚ отличном от "родного" для него английского‚ несколько сложнее.
    В алфавитах многих европейских языков используются символы‚ не входящие в набор из 128 символов ASCII. Для таких языков требуется специальная клавиатура‚ а также возможны затруднения с электронной почтой‚ первоначально рассчитанной лишь на передачу 7-битного ASCII кода. Однако осложнения незначительны‚ если оказывается достаточным стандартный расширенный набор из 256 символов. Такой набор представлен в компьютере так называемой стандартной кодовой таблицей‚ где каждый символ кодируется одним байтом - восемью битами.

    Русскому языку в этом отношении крупно не повезло.

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

    •  
    Ситуация усложняется ещё и тем‚ что стандартная отечественная раскладка русской клавиатуры (расположение символов на клавиатуре) сильно отличается от латинской. Даже совпадающие по начертанию буквы расположены на совершенно разных местах! Это требует дополнительной разметки клавиш‚ а кроме того затрудняет переключение с латиницы на кириллицу даже для тех‚ кто обучен печати вслепую.
    Поэтому за границей часто используют так называемую "фонетическую" раскладку (тоже‚ к сожалению‚ не одну)‚ в минимальной возможной степени отличающуюся от латинской. Это объяснимо‚ но ещё более усложняет общую картину под названием "русская кириллица в Интернете".
    Наконец‚ для тех‚ кто работает не только с русским и английским‚ но и с другими языками (например‚ финским)‚ хорошо знакома ещё одна "головная боль" - коды  специфических символов национальных алфавитов из стандартной кодовой таблицы (например‚ А с точками или О с точками) совпадают с кодами русских букв! Для этих случаев придуманы даже специальные кодовые таблицы‚ где такие символы разнесены.

    Итак‚ чтобы общаться в Интернете по-русски‚ в общем случае приходится иметь дело с несколькими специфически русскими кодировками, с несколькими различными раскладками клавиатуры‚ а также с многочисленными русскими шрифтами (последнее‚ впрочем‚ естественно). Как говорится‚ не соскучишься.

    Разновидности русских кодировок

    Есть 5 основных русских КОДИРОВОК (кодировка сопоставляет символы алфавита цифровым кодам):
    1. koi8-r  - фактический стандарт для современных русских сетей, исторически связанный с сетью Relcom, используется в основном в UNIX-средах
    2. CP1251 (windows-1251) - используется в основном в MS-Windows
    3. MacCyrillic - используется в Apple Macintosh
    4. ISO-8859-5 - используется в основном в X-Window, UNIX-среда
    5. CP866 - используется в основном в MS-DOS и OS/2
    Нередко используется также транслитерация‚ т.е. представление русского текста латинскими буквами.

    Разновидности раскладок русской клавиатуры

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

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

    Программу‚ связывающую клавиатуру с операционной системой‚ называют драйвером клавиатуры.

    Некоторые драйверы позволяют раздельно выбирать раскладку и кодировку. Таков‚ например‚ Cyrillic Keyboard. Другими словами‚ выбрав раскладку‚ скажем‚ йцукен‚ Вы можете затем выбрать кодировку‚ скажем‚ koi8-r или windows-1251.

    Однако в других случаях раздельно выбирать кодировку и раскладку нельзя. В стандартной многоязычной поддержке Windows 95/NT, выбрав "русский язык" (иконка Ru)‚ Вы тем самым выбираете и кодировку - windows-1251. Драйвер Altkeyb также заставляет выбирать кодировку одновременно с раскладкой клавиатуры. Например‚ файл qwer1251.kbd задаёт раскладку яшерты для кодировки windows-1251.


    Разновидности русских шрифтов

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

    Представление конкретного русского шрифта в памяти компьютера часто подразумевает определённую кодировку, что и отражается в его названии (например, К8 Kurier - это шрифт русских букв стиля Kurier для кодировки КОИ8). 


    Уникод

    Не имея национального стандарта на кодировку‚ мы получили сразу международный стандарт в виде Уникода (The Unicode Standard, Version 2.0). Он определяет стандартное представление практически любых символов современных языков‚ в том числе и русской кириллицы. Чтобы отобразить столь огромное множество символов (более миллиона)‚ применяются двухбайтовые коды (схема UTF-16), а также коды переменной длины (схема UTF-8). Последняя привлекательна тем‚ что кодировка символов из набора ASCII остаётся прежней.
    Многие новейшие разработки (Windows NT, Office 97, Internet Expolorer 4.x, Netscape 4.x и др.) базируются на Уникоде или хотя бы воспринимают его. В перспективе Уникод полностью решает проблему избыточного разнообразия кодировок‚ но пока порождает и новые проблемы.

    Проблемы и решения до Уникода

    Проблема перекодировок

    Итак‚ русские тексты на Интернете существуют в разнообразных кодировках. Если источник и получатель текста пользуются различными кодировками‚ то текст приходится перекодировать. Делать это может либо сервер‚ либо клиент (например‚ навигатор или почтарь).
    Для этого и сервер‚ и клиент должны уметь работать хотя бы с одной русской кодировкой.

    Некоторые серверы способны распознавать кодировку, на которую настроен клиент и соответственно перекодировать пересылаемые данные. Другие предлагают выбрать кодировку‚ устраивающую Ваш навигатор.

    Наконец‚ пересылаемый текст может содержать информацию о своей кодировке. Например‚ строка

      <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-r">
    в заголовке Вашей Интернет-странички указывает‚ что эту страничку следует читать‚ пользуясь кодировкой koi8-r.
    В этом последнем (самом правильном с точки зрения разумной стандартизации) варианте клиент может сам заботиться о нужных перекодировках. Именно так и поступают современные навигаторы (во всяком случае‚ Netscape 4.x и Internet Explorer 4.x).

    Электронные письма также могут содержать указания о кодировке. Например‚ строка

      Content-Type: text/plain;  charset="Windows-1251"
    в заголовке письма указывает кодировку Windows-1251.

    Другими словами‚ при правильном оформлении Интернет-страниц (наличие информации о кодировке) и электронных писем‚ а также применении современных навигаторов и почтарей проблема перекодировок русских Интернет страниц для рядового интернавта перестаёт быть головной болью.

    Однако не все правильно оформляют свои страницы‚ не все почтовые программы позволяют правильно указывать или читать указанную русскую кодировку. Наконец‚ устаревшие навигаторы "не понимают" указаний о кодировке. В основном именно поэтому теперь  и приходится иногда мучиться с русскими текстами в Интернете.

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

    Некоторые серверы подразумевают конкретную кодировку, но не сообщают об этом. Тогда приходится подбирать кодировку клиента "вручную". Русские телеконференции (группы новостей) обычно работают в koi8-r‚ хотя сообщения не всегда информируют о ней.

    Программы‚ выполняющие преобразование из одной кодировки в другую‚ называются обычно конверторами (от английского convert - преобразовывать).  Неплохая коллекция полезных конверторов собрана на сайте syber. К их помощи приходится прибегать‚ когда‚ скажем‚ не удаётся прочесть важный текст.

    Илья Сандлер изготовил удобный online конвертор для всех русских кодировок. Достаточно указать адрес странички, ее исходную и желательную кодировки, чтобы довольно быстро увидеть ее перекодированной. Удобно конвертировать и файлы, в том числе и в "русскую латиницу" (но не обратно!), пригодную для посылки любой почтой. К сожалению, при перекодировке в cp866 пропадает буква "а".

    Проблема шрифтов и раскладок

    Когда Вы пишете по-русски‚ то в общем случае необходимо следить за соответствием требуемой кодировки‚ выбранного шрифта и выбранной раскладки клавиатуры.

    Применение Уникода позволяет несколько упростить задачу. Дело в том‚ что шрифты‚ основанные на Уникоде (например‚ "родные" шрифты Windows 95/NT Arial, Times New Roman, Courier New) содержат так называемые скрипты‚ подмножества символов‚ соответствующие национальным алфавитам‚ в том числе кириллице. Так что Вы можете выбрать‚ скажем‚ шрифт Arial, и писать в нём и на английском‚ и на финском‚ и на русском.

    Редактор (например‚ WordPad Windows 95 или MS Word 97) сам подберёт нужный скрипт. Скажем‚ для кириллицы Вы увидите в поле шрифтов редактора виртуальный‚ т.е . самостоятельно не существующий шрифт Arial Cyr.

     

    Проблемы и решения вокруг Уникода

     Хотя подход к решению проблемы национальных алфавитов в целом‚ сомнений не вызывает‚ на практике с ним связаны некоторые новые проблемы.

    WordPad в Windows 95

    Удобно писать в WordPad на трёх языках (скажем‚ русском‚ английском и финском).. Вы уже привыкли к принципу "что вижу‚ то и есть"‚ т.е. привыкли не заботиться о внутреннем представлении Вашего текста. И вот Вы видите на экране одновременно финские и русские буквы‚ спокойно заканчиваете работу и запоминаете Ваш документ в WordPad. Назавтра Вас ждёт немалый сюрприз: Ваши любимые финские буковки благополучно заменены русскими‚ как и было до Уникода! Запоминая на диск  в простом текстовом формате‚ WordPad теряет информацию о скриптах‚ к которым принадлежат отдельные символы (это можно было бы спокойно принять‚ но WordPad не предупреждает об этом! Следует запоминать в RTF формате или формате MS Word.

    Проблема старых русских шрифтов

    Русские TrueType шрифты‚ которые успешно работали до внедрения Уникода‚ не содержат указания на кириллический скрипт. Поэтому когда их пытаются использовать в программах‚ базирующихся на Уникоде (например‚ Netscape 4.x или MS Word 97), они по умолчанию попадают в латинский скрипт. При письме клавиатура выдаёт коды кириллического скрипта‚ и все русские буквы как отсутствующие в шрифте заменяются "коробочками".

    Указанная проблема "лечится" корректировкой шрифтов (например‚ программой SNKDecoder). Перекодировать документы‚ содержащие старые шрифты‚ можно конвертором Cyrfonts.zip‚ который можно загрузить с сайта Microsoft.

    Бывает, что приходится работать с одним документом на разных компьютерах, где установлены, скажем, на первом MS Word 6.0, а на втором MS Word 97. Тогда для перехода с первого компьютера на второй придётся пользоваться конвертором Cyrfonts, а для перехода обратно было бы естественно запоминать документы MS Word 97 в формате Word 6.0. Такой режим есть, однако для русских букв он не работает, насколько я знаю (проверить тщательнее!).


    Дополнительную информацию о русификации Интернета можно найти в  Russification Fundamentals и на подробной  странице Андрея Чернова (особенно полезной для профессионалов).
     

    Hа оглавление Интернет-гида

    Последнее изменение 17.9.1998