Yii框架默认输出的Header中只有content_type:plain/html
没有设定字符集,而平时在html文本的header中设定charset也可以生效,但我们发现当发生错误时,用户按回车,页面就会乱码。
情况是浏览器错误的解析为gb2312的编码,在查看中切换编码为utf8就行了,而html的内容都一样,已经写了charset=utf8
看样子是必须在HTTPResponse的header中也设定一把utf8编码才行了,但Yii中在什么地方可以设置呢?
Yii框架默认输出的Header中只有content_type:plain/html
没有设定字符集,而平时在html文本的header中设定charset也可以生效,但我们发现当发生错误时,用户按回车,页面就会乱码。
情况是浏览器错误的解析为gb2312的编码,在查看中切换编码为utf8就行了,而html的内容都一样,已经写了charset=utf8
看样子是必须在HTTPResponse的header中也设定一把utf8编码才行了,但Yii中在什么地方可以设置呢?
Yii中没找到地方,在nginx中添加配置也能生效:
server { #real server
listen 80;
server_name .sample.com;
charset utf8;
#……
}
在FireFox中用Live Http Headers查看:
HTTP/1.x 200 OK
Server: nginx/0.7.64
Date: Sun, 24 Jan 2010 11:56:42 GMT
Content-Type: text/html; charset=utf8
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.3.1
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Encoding: gzip
本来Content-Type只是text/html,这样浏览器可能会解析错误,产生乱码问题
在你index.php里或者配置文件,手写header(‘Content-type:text/html;charset=utf-8’)
赞,王道。。
以前接触的MVC框架里有HttpResponse类,里面是输出相关的设定,先入为主了。
charset=utf8应该是utf-8,写错了!!