12.7. Перекодирование русскоязычных документов «на лету»

12.7. Перекодирование русскоязычных документов «на лету»

С тех пор, когда в русском языке появилось слово кодировка, появилась и проблема перекодировки. Стандартной кодировкой русского языка для большинства Unix-серверов является КОИ-8. Аббревиатура КОИ расшифровывается как «Код для Обмена Информацией». Все бы было хорошо, если бы существовала одна-единственная кодировка KOI8-r. Но, как всегда, найдутся добрые люди, которые захотят помочь нам кодировать наш русский язык. И таких нашлось немало. Например, всем известная Microsoft сначала использовала кодировку СР-866 (еще известную как альтернативная кодировка — ALT) в своей операционной системе DOS. ОС DOS тогда была установлена на большинстве домашних и офисных компьютеров, поэтому особой разницы, что использовать: KOI8-r или СР-866, для пользователей не было по одной простой причине: у меня отображается так же, как и у соседа. Потом та же Microsoft разработала кодировку Windows-1251 (ANSI) для своей новой операционной системы Windows. Стараясь нам «помочь», она создала проблемы с перекодировкой уже на локальном уровне: файлы, созданные в ОС DOS, без предварительного перекодирования нельзя было прочитать в Windows, и наоборот. Заметьте, об Интернет и Apache я еще не сказал ни слова.

Кроме Microsoft, «облегчили» нам жизнь также компании Apple и Sun, разработав соответственно кодировки Apple и ISO8859-5. Компания IBM также не отстала от них, разработав собственную кодировку русского языка. В общем, развитие таблиц перекодирования русского языка происходило по принципу: а мы новый дом построим…

А теперь представьте: все эти кодировки смешались в Интернет. Я работаю под Unix и использую KOI8, а вы под Windows и мы не можем прочитать файлы друг друга из-за проблем с кодировкой. Это довольно неудачный пример, так как средств для перекодирования из KOI8 в Windows-1251 разработано довольно много. А вот с кодировкой Apple могут возникнуть проблемы. Мне встречались браузеры, некорректно отображающие русские символы в этой кодировке.

Возникает задача: настроить автоматическое перекодирование документов из одной кодировки в другую. Для начала необходимо настроить хотя бы перекодирование «на лету» из KOI8 в Windows-1251, так как большинство клиентов в Сети используют именно эту кодировку (от Windows, как от смерти, не уйдешь).

Обыкновенный англоязычный Apache, входящий в состав большинства дистрибутивов, не сможет вам в этом помочь. Для корректных операций по перекодированию нужно загрузить и установить сервер Russian Apache. Или же просто установить модуль Apache-RUS. Скачать данный модуль (как и полностью Russian Apache) можно по адресу: ftp://apache.Iexa.ru/pub/apache-ras/. При этом старшая часть версии соответствует оригинальному серверу Apache, младшая — версии модуля Apache-Rus.

Рассматривать процесс установки и настройки я буду на примере не очень новой версии сервера — 1.3.3/PL27.3, это не принципиально. Загрузив файл, распакуйте его:

tar xvzf apache_1.3.3rusPL27.3.tar.gz

После этого перейдите в каталог apache_1.3.3rusPL27.3 и запустите сценарий configure:

# cd apache_1.3.3rusPL27.3

# ./configure

Можно также указать некоторые параметры сценария, например, параметр –prefix=path следует использовать при необходимости установить сервер в другой каталог. Далее введите ставшие уже привычными вам команды:

# make

# make install

После этого нужно настроить сервер, то есть отредактировать его файлы конфигурации. Настройка Russian Apache не отличается от настройки обыкновенного сервера Apache, за исключением настройки модуля перекодирования. Ниже будет рассмотрена настройка именно перекодирования «на лету», так как настройка самого сервера описана в предыдущих пунктах этой главы.

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

CharsetSourceEnc koi8-r

CharsetByExtension windows-1251.txt

Эти директивы находятся в файле httpd.conf. Первая указывает на то, что все файлы на диске, кроме файлов с расширением .txt, хранятся в кодировке koi8-r. Для последних указывается кодировка — windows-1251.

Данные директивы можно включать в блок Location или в файлы .htaccess.

Ко второй группе относятся директивы CharsetDecl, CharsetAlias, CharsetRecodeTable и CharsetWideRecodeTable. Они находятся в блоке <IfModule mod_charset.c> — </IfModule> и не нуждаются в изменении. Необходимо только отметить (это нужно для понимания дальнейшего материала), что директива CharsetDecl используется для объявления кодировки, а CharsetAlias — для объявления псевдонима кодировки, например:

CharsetDecl windows-1251 ru

CharsetAlias windows-1251 win x-cp1251 cp1251 cp-1251

Название языка (ru) должно быть определено в файле conf/srm.conf в директивах Add Language и LanguagePriority.

С помощью третьей, самой многочисленной, группы вы можете настроить сервер для автоматической перекодировки символов на основании информации о клиенте. Например, определив, что клиент работает в операционной системе Windows и кодировкой браузера по умолчанию является Windows-1251, сервер самостоятельно перекодирует файлы в нужную кодировку. Если сервер сделает выбор неправильно, пользователь всегда сможет сам изменить кодировку вручную. Существует три способа выбора кодировки: По каталогу, например:

http://www.server.ru/koi/file.html

http://www.server.ru/win/file.html

По имени сервера, например:

http://koi.www.server.ru/file.html

http://win.www.server.ru/file.html

По порту, например:

http://www.server.ru:8000/file.html

http://www.server.ru:8001/file.html

Теперь рассмотрим каждый из этих способов.

Для перекодирования по каталогу (точнее, по его префиксу) нужно добавить в блоке VirtualHost псевдоним, например:

Alias /koi /www/docs

Или же просто создать в нужном каталоге ссылку на самого себя:

# cd /www/docs

# ln –s . koi

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

При использовании перекодировки по имени сервера следует обратить внимание на то, чтобы указанный вами сервер был прописан на сервере DNS. После регистрации поддомена внесите следующие строки в ваш файл httpd.conf:

# Естественно, укажите здесь свой IP-адрес

<VirtualHost 111.111.111.1>

ServerName www.server.ru

ServerAlias *.www.server.ru

# далее следует обычная конфигурация

</VirtualHost>

В качестве имени поддомена нужно использовать один из псевдонимов кодировки, указанный с помощью директивы CharsetAlias, например, koi или win.

Если же сервер DNS администрируете не вы, а кто-то другой и возможности внести изменения в записи DNS у вас нет, то используйте перекодировку по порту. Для этого удалите (закомментируйте) директиву Port в файле конфигурации httpd.conf и вместо нее добавьте следующие директивы:

Listen 80

Listen 8000

Listen 8001

Listen 8002

Listen 8003

CharsetByPort koi8-r 8000

CharsetByPort windows-1251 8001

CharsetByPort ibm866 8002

CharsetByPort iso-8859-5 8003

Номера портов при этом не очень важны. Думаю, это пример настолько прозрачен, что не нуждается в особых комментариях. Правда, есть одно но: если сеть клиента защищена брандмауэром (см. гл. 14), не позволяющем обращения к выбранному вами порту, клиент не сможет установить соединение с вашим сервером.

Схема (порядок) выбора кодировки определяется директивой CharsetSelectionOrder:

CharsetSelectionOrder Dirprefix Useragent Portnumber Hostname UriHostname — для выбора по каталогу.

CharsetSelectionOrder Hostname UriHostname Useragent Portnumber Dirprefix — для выбора по имени домена.

CharsetSelectionOrder Portnumber Useragent Hostname UriHostname Dirprefix — для выбора по порту.

Для начальной настройки перекодирования ваших знаний уже достаточно, а дополнительную информацию вы найдете в документации по серверу Russian Apache.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

3. Исправление ошибок в русскоязычных текстах

Из книги Прикладное программное обеспечение: системы автоматической обработки текстов автора Мальковский Михаил Георгиевич

3. Исправление ошибок в русскоязычных текстах 3.1. Проблема речевых ошибок Использование естественного языка в качестве средства общения ( речевая деятельность человека) неизбежно сопровождается теми или иными нарушениями языковых правил. Такие нарушения - вне


Автосохранение документов

Из книги Компьютер на 100. Начинаем с Windows Vista автора Зозуля Юрий

Автосохранение документов Если работа компьютера будет завершена аварийно, например в случае внезапного исчезновения питания или каких-либо сбоев, то все несохраненные изменения в документе будут утеряны и вам придется выполнять работу повторно.Для уменьшения потери


Печать документов

Из книги Эффективное делопроизводство автора Пташинский Владимир Сергеевич

Печать документов Команды для печати документов расположены в подменю Кнопка «Office» ? Печать (рис. 5.62).? Печать. Открывает диалоговое окно Печать, которое далее будет рассмотрено подробно.? Быстрая печать. При выборе данной команды весь документ сразу же будет отправлен на


Классификация документов

Из книги Adobe InDesign CS3 автора Завгородний Владимир

Классификация документов По происхождению документы можно классифицировать на входящие (поступающие из других организаций), исходящие (отправляемые в другие организации) и внутренние (созданные и используемые внутри организации). Все три потока документов во время их


Экспорт документов

Из книги Word 2007.Популярный самоучитель автора Краинский И

Экспорт документов Команда File ? Export (Файл ? Экспорт) позволяет нам сохранить документ в одном из нескольких графических форматов: EPS, JPEG, SVG, XML. Во всех случаях мы увидим диалоговое окно, в котором сможем выбрать местоположение и имя будущего файла, а также формат,


Печать документов

Из книги Linux-сервер своими руками автора Колисниченко Денис Николаевич

Печать документов Печать документов Adobe InDesign может быть выполнена как на реальный установленный на компьютере принтер, так и на виртуальный принтер, существующий в виде драйвера операционной системы. В этом случае результатом печати будет, конечно же, не стопка листов


Печать документов

Из книги Интернет для электрика автора Повный Андрей

Печать документов В этом подразделе рассмотрены следующие темы:• подготовка документа к печати;• настройки печати;• вывод документа на печать.Я создал фон документа, но Word его не печатает. Почему?Все правильно – фон документа не должен печататься, он задается только


12.7. Перекодирование русскоязычных документов «на лету»

Из книги Самоучитель работы на компьютере автора Колисниченко Денис Николаевич

12.7. Перекодирование русскоязычных документов «на лету» С тех пор, когда в русском языке появилось слово кодировка, появилась и проблема перекодировки. Стандартной кодировкой русского языка для большинства Unix-серверов является КОИ-8. Аббревиатура КОИ расшифровывается


документов

Из книги Технология XSLT автора Валиков Алексей Николаевич

документов Несколько интересных и полезных ресурсов, которые предлагают бесплатные ГОСТы и прочие нормативно-технические


13.11. Печать документов

Из книги Linux: Полное руководство автора Колисниченко Денис Николаевич

13.11. Печать документов 13.11.1. Предварительный просмотр Чтобы после печати вы не были неприятно удивлены, нужно использовать функцию предварительного просмотра и оценить, как будет выглядеть ваш документ на листе бумаги. Итак, нажмите кнопку Предварительный просмотр на


Разметка документов

Из книги Ubuntu 10. Краткое руководство пользователя автора Колисниченко Д. Н.

Разметка документов Идею разметки документов будет проще всего проиллюстрировать на примере. Представим себе следующий рекламный текст:Предлагаем Вашему вниманию новый 3-х камерный холодильник "Горск" объемом 250 л. и стоимостью всего 4500 рублей! Новый дизайн, быстрое


16.12.2. Настройка перекодировки русскоязычных документов

Из книги автора

16.12.2. Настройка перекодировки русскоязычных документов Директивы перекодирования (они находятся в файле httpd.conf) можно разделить на три группы.Первые указывают, в какой кодировке хранятся файлы на диске. Их можно включать в блок Location или в файлы .htaccess:# все файлы, кроме .txt,


15.5. Печать документов

Из книги автора

15.5. Печать документов Чтобы не было неприятных сюрпризов, непосредственно перед печатью документа выполните команду Файл | Предварительный просмотр страницы (или нажмите кнопку предварительного просмотра на стандартной панели инструментов — она находится возле


Приложение Amazon на лету распознаёт товары с помощью камеры (и складывает в виртуальную корзину покупателя) Михаил Карпов

Из книги автора

Приложение Amazon на лету распознаёт товары с помощью камеры (и складывает в виртуальную корзину покупателя) Михаил Карпов Опубликовано 06 февраля 2014 Для Amazon очень важно, чтобы пользователи могли быстро найти в интернете нужный им товар и купили бы