Apache 模块 mod_charset_lite

Description:指定字符集转换或重新编码
Status:Extension
Module Identifier:charset_lite_module
Source File:mod_charset_lite.c

Summary

mod_charset_lite允许服务器在将响应发送给 Client 端之前更改响应的字符集。在 EBCDIC 环境中,Apache 始终将 HTTP 协议内容(例如,响应 Headers)从 Apache 进程语言环境的代码页转换为 ISO-8859-1,而不是转换响应的主体。在任何环境中,都可以使用mod_charset_lite来指定应翻译响应正文。例如,如果文件存储在 EBCDIC 中,则mod_charset_lite可以在将文件发送到 Client 端之前将它们转换为 ISO-8859-1.

该模块提供了由俄语 Apache 及其关联的mod_charset实现的一小部分配置机制。

Common Problems

无效的字符集名称

CharsetSourceEncCharsetDefault的字符集名称参数必须被mod_charset_lite部署在系统上的APR使用的转换机制所接受。这些字符集名称不是标准化的,通常与 http Headers 中使用的相应值不同。当前,APR 只能使用 iconv(3),因此您可以使用 iconv(1)程序轻松测试字符集名称,如下所示:

iconv -f charsetsourceenc-value -t charsetdefault-value

内容字符集和翻译规则不匹配

如果翻译规则对内容没有意义,则翻译可能会以各种方式失败,包括:

  • 转换机制可能返回错误的返回码,并且连接将被中止。

  • 当转换机制不能转换 Importing 缓冲器时,它可以在输出缓冲器中静默地放置特殊字符(例如,问号)。

CharsetDefault Directive

Description:字符集翻译成
Syntax:CharsetDefault charset
Context:服务器配置,虚拟主机,目录,.htaccess
Override:FileInfo
Status:Extension
Module:mod_charset_lite

CharsetDefault指令指定了应将关联容器中的内容转换为的字符集。

charset 参数的值必须被APR中的字符集支持接受为有效的字符集名称。通常,这意味着它必须由 iconv 支持。

Example

<Directory "/export/home/trawick/apacheinst/htdocs/convert">
    CharsetSourceEnc  UTF-16BE
    CharsetDefault    ISO-8859-1
</Directory>

Note

CharsetSourceEncCharsetDefault指定相同的字符集将禁用翻译。字符集不必与响应的字符集匹配,但是它必须是系统上的有效字符集。

CharsetOptions Directive

Description:配置字符集转换行为
Syntax:CharsetOptions option [option] ...
Default:CharsetOptions ImplicitAdd
Context:服务器配置,虚拟主机,目录,.htaccess
Override:FileInfo
Status:Extension
Module:mod_charset_lite

CharsetOptions指令可配置mod_charset_lite的某些行为。选项可以是以下之一

  • ImplicitAdd | NoImplicitAdd

    • ImplicitAdd关键字指定当配置指定应翻译内容的字符集时,mod_charset_lite应隐式插入其过滤器。如果使用AddOutputFilter指令显式配置了过滤器链,则应指定NoImplicitAdd,以便mod_charset_lite不添加其过滤器。
  • TranslateAllMimeTypes | NoTranslateAllMimeTypes

    • 通常,mod_charset_lite将仅对可能的模仿类型的一小部分执行翻译。当为给定的配置节指定TranslateAllMimeTypes关键字时,执行转换时无需考虑 mimetype。

CharsetSourceEnc Directive

Description:文件的源字符集
Syntax:CharsetSourceEnc charset
Context:服务器配置,虚拟主机,目录,.htaccess
Override:FileInfo
Status:Extension
Module:mod_charset_lite

CharsetSourceEnc伪指令指定关联容器中文件的源字符集。

charset 参数的值必须被APR中的字符集支持接受为有效的字符集名称。通常,这意味着它必须由 iconv 支持。

Example

<Directory "/export/home/trawick/apacheinst/htdocs/convert">
    CharsetSourceEnc  UTF-16BE
    CharsetDefault    ISO-8859-1
</Directory>

此示例中的字符集名称与 Solaris 8 中的 iconv 转换支持一起使用。

Note

CharsetSourceEncCharsetDefault指定相同的字符集将禁用翻译。字符集不必与响应的字符集匹配,但是它必须是系统上的有效字符集。