Использование технологий WWW для доступа к базам данных

Поддержка русскоязычных кодировок


Исторически сложилось, что

в России распространены несколько русскоязычных кодировок, в основном

ориентированных на разные платформы. Наиболее известные из них:

  • КОИ - 8 8 - битовая кодировка по ГОСТ

  • Microsoft Code Page 866 ("Альтернативная") - кодировка,

    используемая в MS-DOS

  • ISO-8859-5 - кодировка, утвержденная международной организацией

    по стандартизации

  • Microsoft Code Page 1251 ("Windows") - кодировка,

    используемая в Microsoft Windows.

    Специалисты утверждают что всего в России имеют хождение 11 кодировок

    русского алфавита.

    Если Ваш WWW сервер ориентирован на использование внутри организации



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

    с однотипными рабочими местами, Вы можете ограничиться одной кодировкой

    русскоязычной информации на сервере.

    Сложности возникают, когда Вы захотите расширить круг клиентов

    сервера. Вам необходимо будет организовать поддержку нескольких

    кодовых страниц для русскоязычных документов. Приведенный выше

    список из четырех кодировок удовлетворит более 99% всех возможных

    абонентов сервера.

    Вообще говоря, в составе языка HTML имеются теги, определяющие

    кодировку документа и должные позволить корректно прочитать документ

    в любой кодировке. Однако в связи с тем,

    что эти теги не поддерживаются ни одним из известных броузеров,

    надеяться на них не стоит. Возможно, в будущем эта ситуация изменится,

    и проблема с кодировками будет решена.

    Для поддержки нескольких кодовых страниц применяется множество

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

  • использование файлов - копий одного документа в разных кодировках

  • динамическое преобразование документов из кодировки, в которой

    они лежат на сервере, в кодировку, поддерживаемую WWW - клиентом.

    В первом случае, на сервере физически присутствуют все файлы во

    всех поддерживаемых кодировках. Документы в различных кодировках

    отличаются между собой по правилам образования путей и имен.

    Например:

    indexw.html,

    indexa.html

    - добавление суффиксов, определяющих


    кодировку. Или

    .../koi8/index.html,

    .../win/index.html

    - различные базовые каталоги для разных кодировок.

    При этом выделяется одна мастер - кодировка,

    в которой новые документы располагаются на сервере,

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

    специальной программы - перекодировщика.

    Программа - перекодировщик может запускаться вручную -

    администратором WWW сервера

    или автоматически, с использованием

    команд cron, at.

    Во втором случае, доступ к

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

    динамически перекодирующую документы сервера в кодировку

    WWW - клиента. Эта программа может быть CGI

    - программой, через которую всегда осуществляется доступ

    к русскоязычной части сервера. На

    вход такой программе передается реальный путь документа и кодировка

    WWW - клиента,

    в которую нужно перекодировать указанный документ

    (см. рис.

    12.1)



    Программа - перекодировщик может также располагаться между WWW

    - клиентом и сервером (см.рис.12.2).

    В таком варианте она называется PROXY.



    Однако здесь возникает проблема с перекодировкой всех данных,

    включая графику, видео,

    аудио и других нетекстовых материалов.

    Для ее решения PROXY придается

    дополнительный интеллект - определять тип передаваемых данных

    по заголовку MIME и решать,

    перекодировать документ или нет,

    на основе его типа. Программы

    - перекодировщики с различными кодировками обрабатывают обращения

    к разным портам tcp сервера.

    Клиенту работа с PROXY видна

    в URL.

    Например:

    http://www.nsu.ru:80/index.html

    - для кодировки КОИ-8,

    http://www.nsu.ru:8000/index.html

    - для кодировки ISO-8859-5

    и т.д.

    []

    []

    []


    Содержание раздела