作为HTTP内容协商的一部分,charset通常和Accept/Content-Type,Accept-Charset头字段配合使用。
nginx中可以对charset的值进行控制,直接看配置和说明
#本配置文件测试charset,对应模块为ngx_http_charset_module
#source_charset 指定响应使用的字符集,定义响应本身的字符集,至于客户端如何解析,通过charset控制。
#charset 添加指定字符集到Context-Type头部,它不是定义响应本身的字符集,而是告诉浏览器如何解析响应,off表示移除添加到Content-Type的设置
#如果source_charset和charset的设置有冲突,则需要用charset_map做转换
#转换使用转换表,缺省nginx携带了几个转换文件如conf/koi-utf,转换表用charset_map定义
#nginx缺省的charset koi8-r;是斯拉夫语的,也就是俄语的常用字符集
#下例展示的是一个charset和source_charset设置不一致的情况,如何设置charset,charset_map,source_charset
charset_map utf-8 gbk {} #定义转换表,可以为空,当然也不保证实际显示的正确性。
#charset gbk;
server {
listen 80;
server_name test test1;
source_charset utf-8;
#charset utf-8,gbk;#charset可以罗列多个
charset gbk;
#charset off;
root html;
access_log logs/200_charset_access.log main;
error_log logs/200_charset_error.log debug;
#default_type官网文档显示缺省类型是text/plain,但如果不显示添加default_type,实际显示的类型是application/octet-stream
#并且会影响charset的设置,如果不设置default_type,则charset无法生效。
default_type text/plain;
location / {
return 200 'okn';
}
}
#curl实测的效果,charset返回gbk
#[root@test01 conf]# curl test -I
#HTTP/1.1 200 OK
#Server: nginx/1.20.1
#Date: Tue, 08 Feb 2022 02:40:24 GMT
#Content-Type: text/plain; charset=gbk
#Connection: keep-alive
Chrome返回的效果:



