Nginx

ngx_http_charset_module

ngx_http_charset_module模块

  • 示例配置

  • 指令

  • 字符集

  • charset_map

  • charset_types

  • override_charset

  • source_charset

ngx_http_charset_module模块将指定的字符集添加到“Content-Type”响应标题字段。此外,该模块可以将数据从一个字符集转换为另一个字符集,但有一些限制:

  • 转换以单向方式执行 - 从服务器到客户端,

  • 只能转换单字节字符集

  • 或UTF-8的单字节字符集。

示例配置

include conf/koi-win; charset windows-1251; source_charset koi8-r;

指令

句法:字符集字符集| 关闭;
默认:字符集关闭;
语境:http,服务器,位置,如果在指定位置

将指定的字符集添加到“Content-Type”响应标题字段。如果此字符集与source_charset伪指令中指定的字符集不同,则执行转换。

该参数off取消将字符集添加到“Content-Type”响应标题字段。

字符集可以用变量定义:

charset $charset;

在这种情况下,变量的所有可能值至少需要以charset_map,charset或source_charset指令的形式出现在配置中。 对于utf-8,windows-1251和koi8-r字符集,配置文件中包含conf / koi-win,conf / koi-utf和conf / win-utf文件就足够了。 对于其他字符集,只需制作一个虚构的转换表就行,例如:

charset_map iso-8859-5 _ { }

另外,可以在“X-Accel-Charset”响应头字段中设置字符集。可以使用proxy_ignore_headers,fastcgi_ignore_headers,uwsgi_ignore_headers和scgi_ignore_headers指令禁用此功能。

句法:charset_map charset1 charset2 {...}
默认:
语境:HTTP

描述从一个字符集到另一个字符集的转换表。使用相同的数据构建反向转换表。字符代码以十六进制给出。缺少80-FF范围内的字符将被替换为“ ?”。从UTF-8转换时,单字节字符集中丢失的字符被替换为“ &#XXXX;”。

例:

charset_map koi8-r windows-1251 { C0 FE ; # small yu C1 E0 ; # small a C2 E1 ; # small b C3 F6 ; # small ts ... }

在将转换表格描述为UTF-8时,应在第二列中给出UTF-8字符集编码,例如:

charset_map koi8-r utf-8 { C0 D18E ; # small yu C1 D0B0 ; # small a C2 D0B1 ; # small b C3 D186 ; # small ts ... }

分发文件conf / koi-win,conf / koi-utf和conf / win-utf中提供了从koi8-r到windows-1251以及从koi8-r和windows-1251到utf-8的完整转换表。

句法:charset_types mime-type ...;
默认:charset_types text / html text / xml text / plain text / vnd.wap.wml application / javascript application / rss + xml;
语境:http,服务器,位置

除了“ text/html” 之外,还允许模块处理响应指定的MIME类型。特殊值“ *”匹配任何MIME类型(0.8.29)。

在版本1.5.4之前,“ application/x-javascript”被用作默认的MIME类型而不是“ application/javascript”。

句法: override_charset 开启|关闭;
默认:override_charset关闭;
语境:http,服务器,位置,如果在指定位置

确定在答案已在“Content-Type”响应头字段中携带字符集时,是否应对从代理或FastCGI / uwsgi / SCGI服务器收到的答案执行转换。如果启用转换,则将接收到的响应中指定的字符集用作源字符集。

应该注意的是,如果在子请求中接收到响应,则始终执行从响应字符集到主要请求字符集的转换,而不管override_charset指令设置如何。

句法:source_charset字符集;
默认:
语境:http,服务器,位置,如果在位置

定义响应的源字符集。如果此字符集与charset伪指令中指定的字符集不同,则执行转换。