情景:
index.html 使用如下代码访问另外一个html片段
1 2 3 4 5 6 7 8 9 10 11 12 13 | function rewritedata(id){ var uu = "/ciweekly/categorydataph/html/ciweeklyph_" +id+ ".html" ; $.ajax({ url:uu, type: 'POST' , dataType: 'text/html' , error: function (){ }, success: function (dd){ $( "#ph_dd" ).html(dd); } }); } |
注意:被访问的html为片段文件 ,里面只有一些数据代码 没有头部没有设置编码
使用ajax在发出请求后,xmlhttp组件在解析返回数据的编码时,是根据 http 响应的头部中是否有页面内容编码声明决定的.
如果返回的 http 头部中包含 charset 的内容编码声明,则按指定的编码读 responseBody,转换后存在 responseText中.
如果返回的 http 头部中没有包含 charset 的内容编码声明,则默认其编码为 utf-8,所以,如果是gb2312的html页面,在用ajax请求后,读出来肯定是乱的.原因是因为 html 页面服务端在输出的时候,是不包含 charset 内容编码声明的,所以ajax就会按utf-8来解码,不乱才怪.解决办法:在被访问的html片段页面头部放入如下声明:
1 | < meta http-equiv = "Content-Type" content = "text/html; charset=gb2312" >
|