手机银河国际网址将忽略页面中的meta标签指定的编码. 但是容许脚本直接header编码方式给客户端

当前位置:银河国际9992019 > 手机银河国际网址 > 手机银河国际网址将忽略页面中的meta标签指定的编码. 但是容许脚本直接header编码方式给客户端
作者: 银河国际9992019|来源: http://www.btzcywj.com|栏目:手机银河国际网址

文章关键词:银河国际9992019,编码方法

  由这些因素决定:1.如果Apache有DefaultCharset,则js文件解析用服务器指定的编码;2.如果PHP header声明charset为编码utf-8,则文件编码用utf-8来解析。3.如果以上两个都为空,手机银河国际网址页面编码由meta标签决定。4.如果以上声明都没有,手机银河国际网址则会使用utf-8来解析。5.如果页面编码为gbk,手机银河国际网址而js文件编码为utf-8,则可以在js属性中定义charset=utf-8。

  问题就在于,没有一个统一的标准,来指明这俩中方式的优先级, 不同的浏览器有着不同的优先级策略.这也就是为什么,我们在FF下正常浏览的页面,在IE下会乱码的原因.

  这个问题已经遇到过俩次了,就是页面中明确指明了编码是UTF8,但是显示是乱码。

  虽然知道解决方法,也知道是Apache的原因,但是一直没有去找其所以然,今天趁机,就研究了一下。

  结果: 乱码,使用wireshark抓包,发现服务器返回的header中指明了:

  也就是说,当Apache不指定defaultcharset的时候,页面编码由页面自己的meta标签指定。

  当Apache指定的时候,将忽略页面中的meta标签指定的编码. 但是容许脚本直接header编码方式给客户端

  反之如果脚本显示申明了,那么就会按照脚本header申明中的charset设置.

  这样到了浏览器端以后, 浏览器就可以根据HTTP头的charset申明来按照特定的编码格式解析获取到的HTML代码,但现在的问题是, 页面是GBK的,但是引用的外部js文件是utf8编码的,这样的情况, 我们可以使用一个script的属性来解决:

网友评论

我的2016年度评论盘点
还没有评论,快来抢沙发吧!