Ajax乱码问题整理
前端之家收集整理的这篇文章主要介绍了
Ajax乱码问题整理,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
原帖地址:http://www.cnblogs.com/goody9807/archive/2007/05/31/766568.html
产生原因
主要有2个原因
1xtmlhttp返回的数据默认的字符编码是utf-8,如果前台页面是gb2312或者其它编码数据就会产生乱码
2post方法提交数据默认的字符编码是utf-8,如果后台是gb2312或其他编码数据就会产生乱码
解决方法
进一步整理中
推荐方法,前台后台都用utf-8编码,这样可以省不少麻烦,从根本上解决了乱码问题.优点是效率高,而且符合目前的形式,utf-8编码本身就是一种比较优秀的编码,没有语言限制.缺点只能调用自己的后台编码或者其他的utf-8的编码.
前台更改为
<
Metahttp-equiv="Content-Type"content="text/html;charset=utf-8">
后台asp中第一行加入如下代码
<%@LANGUAGE="JAVASCRIPT"CODEPAGE="65001"%>
<%Response.Charset="utf-8";%>
<%Session.CodePage=65001;%>
后台如果有
HTML代码也需保证
<
Metahttp-equiv="Content-Type"content="text/html;charset=utf-8">
补救的
方法是进行编码转换.可以在客户端也可以在服务器端进行编码转换.优点是没有任何限制,缺点效率低.
这里是服务端的asp编码,由于脚本语言是javascript,所以直接复制到客户端也可以使用!
补充
如果是老系统
升级ajax,如果系统是gb2312的话,也无需大
修改
新建立一个ajax的
后台页面编码是utf-8,
前台可以为任意编码,
后台页面负责
添加数据库,可保证存入
数据库后无乱码
AJAX在Post
中文的时候
解决乱码的
方法
加上设置字符编码的
方法:
response.setHeader("charset","gb2312");
********************************************
看到的说明原文如下:
用AJAX来GET回一个
页面时,RESPONSETEXT里面的
中文多半会出现乱码,这是因为xmlhttp在处理返回的responseText的时候,是把resposeBody按UTF-8编码进解码考形成的,如果服务器送出的确实是UTF-8的数据流的时候汉字会正确
显示,而送出了GBK编码流的时候就乱了。
解决的办法就是在送出的流里面加一个HEADER,指明送出的是什么编码流,这样XMLHTTP就不会乱搞了。
PHP:header('Content-Type:text/html;charset=GB2312');
ASP:Response.Charset("GB2312")
JSP:response.setHeader("Charset","GB2312");
在用ASP.NET写网上支付的接口程序时,遇到一个奇怪问题,通过表单提交过去的
中文全是乱码,英文正常。而用asp程序进行测试,可以正常提交
中文,asp
页面中有这样的
HTML代码:
<
Meta
http-equiv
="Content-Type"
content
="text/html;charset=gb2312"
>
可是将这个
代码加入到ASP.NET
页面中,依然
解决不了问题。分析了一下,问题应该是编码引起的,对方的程序只能处理GB2312编码的
页面提交过来的
中文数据。难道加了上面的
代码,ASP.NET却不是以GB2312编码
显示的?打开该
页面,查看一下浏览器的编码,原来是UTF-8,原因找到,怎么
解决呢?看来,ASP.NET不理睬上面的
代码,自己向浏览器发送编码信息,那我设置一下Response.ContentEncoding试试,在Page_Load中
加上如下
代码:
Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");