描述: | 对基于libxml2的过滤器模块的增强的字符集/国际化支持 |
---|---|
状态: | 基础 |
模块标识符: | xml2enc_module |
源文件: | mod_xml2enc.c |
兼容性: | 2.4版及更高版本。作为2.2.x版本的第三方模块可用 |
该模块为支持标记的过滤器模块(例如)提供了增强的国际化支持mod_proxy_html
。它可以自动检测输入数据的编码,并确保它们由libxml2解析器正确处理,包括在必要时转换为Unicode(UTF-8)。它还可以在标记处理之后将数据转换为选择的编码,并确保
在HTTP Content-Type标头中设置了正确的字符集值。
有两种使用情况:编程为可与mod_xml2enc一起使用的模块,以及不知道该模块的模块:
mod_proxy_html
3.1版及更高版本等模块使用xml2enc_charset
可选功能来检索charset参数以传递给libxml2解析器,并且可以使用
xml2enc_filter
可选功能将其后处理为另一种编码。将mod_xml2enc与启用的模块一起使用,无需进行任何配置:另一个模块将为您配置mod_xml2enc(尽管您可能仍想使用以下配置指令来自定义它)。
要将其与未明确为mod_xml2enc启用的基于libxml2的模块一起使用,您必须自己配置过滤器链。因此,要将其与模块mod_foo提供 的过滤器foo一起使用,以改善后者对HTML和XML的i18n支持,可以使用
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中的一个(或两个)支持的任何字符集。
鼓励程序员编写基于libxml2的过滤器模块,使其能够启用mod_xml2enc,以便为用户提供强大的i18n支持,而无需花费很多精力。编程API在mod_xml2enc.h中
公开,用法示例为
mod_proxy_html
。
不同于mod_charset_lite
,mod_xml2enc设计为处理其编码无法事先知道并因此进行了配置的数据。因此,它使用“嗅探”技术来检测HTTP数据的编码,如下所示:
<META>
元素中声明了编码,则使用该编码。xml2EncDefault
。规则按顺序应用。一旦找到匹配项,将使用该匹配项并停止检测。
libxml2始终在内部使用UTF-8(Unicode),而基于libxml2的过滤器模块将默认输出该内容。mod_xml2enc可以通过API更改输出编码,但是目前尚无法直接配置该编码。
至少从理论上讲,不必更改输出编码,并且不建议这样做,因为不必要的转换会给服务器带来额外的处理负担。
如果您正在使用平台上可用的任何转换方法都不支持的编码,则仍可以使用来将它们别名为支持的编码xml2EncAlias
。
描述: | 识别用于编码值的别名 |
---|---|
句法: | xml2EncAlias charset alias [alias ...] |
内容: | 服务器配置 |
状态: | 基础 |
模块: | mod_xml2enc |
此服务器范围的指令将一个或多个编码别名为另一种编码。这使得libxml2无法识别的编码可以由libxml2的编码支持在内部使用转换表进行识别的编码处理。这有两个目的:支持libxml2或iconv不能识别的字符集(或名称),以及跳过不需要编码的编码转换。