hi:
> 由于我在lua代码中对子请求的响应正文使用cjson进行了decode后,发现ngx.say 到 浏览器显示乱码,但是打印到日志文件,未发现问题
日志OK,基本能说明编码正常,浏览器显示乱码,你要看一下浏览器设置的默认编码格式(国内大部分都是GB2312)
应答内容是UTF-8,但是应答头部没有指明具体编码格式,浏览器就会使用默认编码格式,所以乱码诞生。
> 但是我将 default_type 改为 'application/json;charset=utf-8'; ,响应结果正常了
头部指定了编码格式,浏览器就会使用指定的编码进行解码,自然结果就正常了。
如果怀疑编码是否真的有问题,建议wireshark抓包,看二进制数据是否存在非预期编码问题。
明确是谁的问题,就好解决了。
On Wednesday, July 8, 2015 at 4:33:18 PM UTC+8, wang28...@gmail.com wrote:
Hi, agentzh:
由于我在lua代码中对子请求的响应正文使用cjson进行了decode后,发现ngx.say 到 浏览器显示乱码,但是打印到日志文件,未发现问题。
所以我认识是响应请求时,编码有问题!但是在http ,server,location 中加入charset utf-8;(google 了一把,发现大家都是这么讲的) ,发现还是出现同样的乱码!但是我将 default_type 改为 'application/json;charset=utf-8'; ,响应结果正常了,未出现乱码。请问这两个地方添加charset有什么不同么?总感觉直接配置charset 没有生效!
我使用的openresty 版本为1.7.4.1 .
感谢!