|
ngx_http_charset_module模块为响应头的“Content-Type”添加指定的字符集。
此外,这个模块可以把数据从一个字符集转换为另一个字符集,但也有以下限制:
-
只能单向转换,即从服务端到客户端,
-
只有单字节字符集能被转换
-
或者单字节字符集和UTF-8之间的互相转换。
配置示例
include conf/koi-win;
charset windows-1251;
source_charset koi8-r;
指令
|
语法:
|
charset charset | off;
|
|
默认值:
|
charset off;
|
|
上下文:
|
http, server, location, if in location
|
为响应头的“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
指令来禁用。
|
语法:
|
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, and conf/win-utf中已经提供了从koi8-r到
windows-1251,从koi8-r到utf-8,以及从
windows-1251到utf-8的完整转换表。
|
语法:
|
charset_types mime-type ...;
|
|
默认值:
|
charset_types text/html text/xml text/plain text/vnd.wap.wml
application/x-javascript application/rss+xml;
|
|
上下文:
|
http, server, location
|
这个指令出现在版本 0.7.9.
使模块在响应时能处理除了“text/html”之外其他指定的MIME类型。
特殊值“*” 匹配任意的MIME类型(0.8.29)。
|
语法:
|
override_charset on | off;
|
|
默认值:
|
override_charset off;
|
|
上下文:
|
http, server, location, if in location
|
对于接收到的代理服务器或者FastCGI服务器的响应头中“Content-Type”已经带有字符集的情况,确定是否进行字符集转换。
如果开启转换,接收到的响应中指定的字符集会被当作原始字符集。
需要注意的是,如果在子请求中接收到的应答,始终会将应答的字符集转换为主请求的字符集,无论override_charset
指令是否开启。
|
语法:
|
source_charset charset;
|
|
默认值:
|
—
|
|
上下文:
|
http, server, location, if in location
|
定义响应中的原始字符集。
如果这个字符集和charset指令设置字符集的不同,就会进行转换。
|