On this page
Module ngx_http_charset_module
ngx_http_charset_module
模块将指定的字符集添加到“ Content-Type”响应头字段中。此外,该模块可以将数据从一种字符集转换为另一种字符集,但有一些限制:
转换是一种方式-从服务器到客户端,
只能转换单字节字符集
或往返于 UTF-8 的单字节字符集。
Example Configuration
include conf/koi-win;
charset windows-1251;
source_charset koi8-r;
Directives
Syntax: | charset charset | off; |
Default: | charset off; |
Context: | 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,uwsgi_ignore_headers,scgi_ignore_headers和grpc_ignore_headers指令禁用此功能。
Syntax: | charset_map charset1 charset2 { ... } |
Default: | — |
Context: | http |
描述从一个字符集到另一个字符集的转换表。反向转换表是使用相同的数据构建的。字符代码以十六进制给出。 80-FF 范围内的丢失字符将替换为“ ?
”。从 UTF-8 转换时,一字节字符集中缺少的字符将替换为“ &#XXXX;
”。
Example:
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
的完整转换表。
Syntax: | charset_types mime-type ...; |
Default: | charset_types 文本/ html 文本/ xml 文本/纯文本/vnd.wap.wml |
application/javascript application/rss xml; |
|
上下文: http ,server ,location |
该指令出现在版本 0.7.9 中。
除了“ text/html
”之外,还可以在具有指定 MIME 类型的响应中启用模块处理。特殊值“ *
”匹配任何 MIME 类型(0.8.29)。
Note
在 1.5.4 版之前,“ application/x-javascript
”用作默认的 MIME 类型,而不是“ application/javascript
”。
Syntax: | override_charset on | off; |
Default: | override_charset off; |
Context: | http , server , location , if in location |
确定当答案已在“ Content-Type”响应 Headers 字段中包含字符集时,是否应该对从代理服务器或 FastCGI/uwsgi/SCGI/gRPC 服务器接收的答案执行转换。如果启用了转换,则在接收到的响应中指定的字符集将用作源字符集。
Note
应该注意的是,如果在子请求中接收到响应,则始终执行从响应字符集到主请求字符集的转换,而不管override_charset
指令设置如何。
Syntax: | source_charset charset; |
Default: | — |
Context: | http , server , location , if in location |
定义响应的源字符集。如果此字符集与charset指令中指定的字符集不同,则会执行转换。