解决JS请求服务器gbk文件乱码的问题
投稿:mrr
JS获取服务器编码格式为gb2312的文件时内容为乱码,ajax网络请求内部使用的是XMLHttpRequest,所以在请求之前需要设置一下编码格式,但是设置xhr.setRequestHeader("accept", "text/csv;charset=gb2312,*/*");没有效果,只有设置xhr.overrideMimeType("text/csv;charset=gb2312");才正确,代码如下:
<span style="font-size:18px;">$.ajax({ type: "get", url:"http://7xnhdv.com1.z0.glb.clouddn.com/test1.csv", beforeSend: function(xhr) { //beforeSend定义全局变量 // xhr.setRequestHeader("accept", "text/csv;charset=gb2312,*/*"); xhr.overrideMimeType("text/csv;charset=gb2312"); }, success: function(xmlDoc, textStatus, xhr) { if(xhr.status == 200) { $('#view0').text(xmlDoc); } } } );</span>
overrideMimeType作用将覆盖发送给服务器的头部,强制text/csv;charset=gb2312作为 mime-type。
ps:js中文显示乱码或在页面显示乱码解决方法
①.js 文件中文显示乱码
Javascript文件XX.js编辑保存时有一种编码方案(如GBK),当打开文件的时候所用的编码(如UTF-8)和保存时的编码方案不一致时,则会出现中文显示乱码。
解决方案:
(1) 用编辑器打开浏览的时候,选择和原文件编码(如GBK)一致的编码方式查看,则不会出现乱码;
(2)在eclipse中的package explorer中选中乱码的XX.js,右键菜单中选择properties,在Text file encoding中选择与XX.js编辑保存时的编码(如GBK),则可以正常显示;
②网站页面中JavaScript中中文字段乱码
在eclipse或者编辑器中XX.js中中文显示正常,在页面调用XX.js,执行后页面结果中中文字段显示乱码。
解决方案:
在引用XX.js的页面上“显示”加上XX.js文件的编码方式,使之与XX.js文件的本身的编码方式(如GBK)保持一致。
<script type="text/javascript" language="JavaScript" src="/js/XX.js" charset=“GBK”></script>
建议:
(1)在用Eclipse或者Myeclipse新建XX.js,进行编辑时,建议先将Text file encoding改为UTF-8,然后进行编辑保存。
(2)用文本文档或者其他编辑器编辑保存XX.js, 建议以UTF-8的编码方式保存。
(3) 在引用XX.js的页面上“显示”加上XX.js文件的编码方式UTF-8。
<script type="text/javascript" language="JavaScript" src="/js/XX.js" charset=“utf-8”></script>