Apache. Документация на русском


Разделы:   1    2    3    4    5    6    7    8    9      10      11    12    13    14    15    16  

Раздел 10. Модули Апача

Пункты:   85    86    88    89    90    91    92    93    94    95    96    97    98    99    100    101    102    103    104    105    106    107    108    109    110    111    112    113    114    115    116    117    118    119    120    121    122    123    124    125    126    127    128    129    130    131    132    133    134    135    136    137    138    139    140    141    142    143    144    145    146    147    148    149    150    151    152    153    154    155    156    157    158    159    160    161    163    164    165    166    167    168    170    171    172    173    174    175    176    177    178    179    180    181    182    183    184    185    186    187    188    189    190    191    192    193    194    195    196    197    198    199    200    201    203    204    205    206    207    208    209    210    211    212      213    

 <         > 
  RU            EN  

Пункт 213. Модуль Apache mod_xml2enc

Этот модуль обеспечивает расширенную поддержку интернационализации для модулей фильтров с учетом разметки, таких как файлы mod_proxy_html . Он может автоматически определять кодировку входных данных и обеспечивать их правильную обработку синтаксическим анализатором libxml2, включая преобразование в Unicode (UTF-8), где это необходимо. Он также может преобразовывать данные в выбранную кодировку после обработки разметки и гарантирует, что в заголовке HTTP Content-Type установлено правильное значение набора символов .

Применение

Есть два сценария использования: с модулями, запрограммированными на работу с mod_xml2enc, и с теми, которые об этом не знают:

Модули фильтрации включены для mod_xml2enc

Такие модули, как mod_proxy_html версия 3.1 и выше, используют xml2enc_charset необязательную функцию для извлечения аргумента charset для передачи анализатору libxml2 и могут использовать необязательную xml2enc_filter функцию для постобработки в другую кодировку. При использовании mod_xml2enc с включенным модулем настройка не требуется: другой модуль настроит mod_xml2enc за вас (хотя вы все равно можете настроить его, используя приведенные ниже директивы конфигурации).

Неактивные модули

Чтобы использовать его с модулем на основе libxml2, который явно не включен для mod_xml2enc, вам придется настроить цепочку фильтров самостоятельно. Таким образом, чтобы использовать его с фильтром foo , предоставляемым модулем mod_foo , для улучшения поддержки последнего i18n с помощью HTML и XML, вы можете использовать

      
 FilterProvider iconv xml2enc Content-Type $text/html
 FilterProvider iconv xml2enc Content-Type $xml
 FilterProvider markup foo Content-Type $text/html
 FilterProvider markup foo Content-Type $xml
 FilterChain iconv markup
     

mod_foo теперь будет поддерживать любой набор символов, поддерживаемый одним (или обоими) из libxml2 или apr_xlate/iconv.

API программирования

Программистам, пишущим модули фильтров на основе libxml2, рекомендуется включать их для mod_xml2enc, чтобы обеспечить сильную поддержку i18n для ваших пользователей, не изобретая велосипед. Программный API представлен в mod_xml2enc.h , а пример использования — mod_proxy_html .

Обнаружение кодировки

В отличие от mod_charset_lite , mod_xml2enc предназначен для работы с данными, кодировка которых не может быть известна заранее и поэтому не может быть настроена. Поэтому он использует методы «обнюхивания» для обнаружения кодировки данных HTTP следующим образом:

  1. Если заголовок HTTP Content-Type включает параметр charset , он используется.
  2. Если данные начинаются с метки порядка байтов XML (BOM) или объявления кодировки XML, они используются.
  3. Если кодировка объявлена в <META> элементе HTML, она используется.
  4. Если ничего из вышеперечисленного не соответствует, xml2EncDefault используется значение по умолчанию, установленное.

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

Выходное кодирование

libxml2 всегда использует внутри кодировку UTF-8 (Unicode), и модули фильтрации на основе libxml2 выводят это по умолчанию. mod_xml2enc может изменить кодировку вывода через API, но в настоящее время нет возможности настроить это напрямую.

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

Неподдерживаемые кодировки

Если вы работаете с кодировками, которые не поддерживаются ни одним из методов преобразования, доступных на вашей платформе, вы все равно можете привязать их к поддерживаемой кодировке, используя xml2EncAlias .

директива xml2EncAlias

Описание:Распознавание псевдонимов для значений кодирования
Синтаксис: xml2EncAlias charset alias [alias ...]
Контекст:конфигурация сервера
Положение дел:База
Модуль:mod_xml2enc

Эта общесерверная директива применяет одну или несколько кодировок к другой кодировке. Это позволяет кодировкам, не распознаваемым libxml2, обрабатываться внутренней поддержкой кодирования libxml2 с использованием таблицы перевода для распознаваемой кодировки. Это служит двум целям: поддерживать наборы символов (или имена), не распознаваемые ни libxml2, ни iconv, и пропускать преобразование для кодировки, где известно, что оно не нужно.



Директива xml2EncDefault

Описание:Устанавливает кодировку по умолчанию, которая принимается, когда абсолютно никакая информация не может быть обнаружена автоматически.
Синтаксис: xml2EncDefault name
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Положение дел:База
Модуль:mod_xml2enc
Совместимость:Версия 2.4.0 и выше; доступен как сторонний модуль для более ранних версий.

Если вы обрабатываете данные с известной кодировкой, но без информации о кодировке, вы можете установить это значение по умолчанию, чтобы помочь mod_xml2enc правильно обрабатывать данные. Например, чтобы работать со значением по умолчанию Latin1 ( iso-8859-1, указанным в HTTP/1.0, используйте

 xml2EncDefault iso-8859-1 

директива xml2StartParse

Описание:Посоветуйте синтаксическому анализатору пропустить ведущий мусор.
Синтаксис: xml2StartParse element [element ...]
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Положение дел:База
Модуль:mod_xml2enc

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

Его никогда не следует использовать для XML или правильно сформированного HTML.



 <         > 

Пункты:   85    86    88    89    90    91    92    93    94    95    96    97    98    99    100    101    102    103    104    105    106    107    108    109    110    111    112    113    114    115    116    117    118    119    120    121    122    123    124    125    126    127    128    129    130    131    132    133    134    135    136    137    138    139    140    141    142    143    144    145    146    147    148    149    150    151    152    153    154    155    156    157    158    159    160    161    163    164    165    166    167    168    170    171    172    173    174    175    176    177    178    179    180    181    182    183    184    185    186    187    188    189    190    191    192    193    194    195    196    197    198    199    200    201    203    204    205    206    207    208    209    210    211    212      213    

Рейтинг@Mail.ru