Ajax乱码问题整理

转载 2007年09月23日 00:48:00
产生原因
主要有2个原因
1 xtmlhttp 返回的数据默认的字符编码是utf-8,如果前台页面是gb2312或者其它编码数据就会产生乱码
2 post方法提交数据默认的字符编码是utf-8,如果后台是gb2312或其他编码数据就会产生乱码

解决方法
进一步整理中
推荐方法,前台后台都用utf-8编码,这样可以省不少麻烦,从根本上解决了乱码问题.优点是效率高,而且符合目前的形式,utf-8编码本身就是一种比较优秀的编码,没有语言限制.缺点只能调用自己的后台编码或者其他的utf-8的编码.
前台更改为
程序代码 程序代码

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

后台asp中第一行加入如下代码
程序代码 程序代码

<%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%>
<% Response.Charset="utf-8"; %>
<% Session.CodePage=65001; %>

后台如果有html代码也需保证
程序代码 程序代码

<meta http-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");
 

Ajax乱码问题整理

原帖地址: http://www.cnblogs.com/goody9807/archive/2007/05/31/766568.html 产生原因 主要有2个原因 1 xtmlhttp...
  • jiangnanyidiao
  • jiangnanyidiao
  • 2014年11月29日 20:24
  • 294

解决jquery ajax中文传递到后端出现乱码问题 java

这几天,好久没有写过了,今天一个ajax提交中文乱码的问题需要解决,在徘徊了一天,看到了一个人的高见,必杀技解决了这个问题,页面有个中文搜索需要传递到后台,发现,无论是jquery的post还是get...
  • lilovfly
  • lilovfly
  • 2017年04月20日 12:27
  • 1149

Ajax Post请求中文乱码问题解决方案

本文介绍解决ajax post中文乱码的问题的方案,如果你的web应用中全部使用utf-8编码,那将不会有这上问题。这里主要是解决那些要求页面编码是gbk或 gb2312等非utf-8编码(有时候由于...
  • andamajing
  • andamajing
  • 2015年10月15日 14:36
  • 2187

Ajax异步请求,中文乱码问题处理

Ajax异步请求,中文乱码问题处理
  • u012236238
  • u012236238
  • 2017年04月10日 15:56
  • 597

springmvc 发送ajax中文乱码的几种解决办法

使用spingmvc,在JS里面通过ajax发送请求,并返回json格式的数据,从数据库拿出来是正确的中文格式,展示在页面上就是错误的??,研究了一下,有几种解决办法。    我使用的是spin...
  • abrahu
  • abrahu
  • 2014年08月09日 15:57
  • 9352

关于AJAX/GET请求乱码的问题

ajax的get请求参数中若存在中文等非“ASCII字符”时,服务端在解析请求参数时,如果仅通过request.getParameter(参数key)方法获取参数值,而不进行相关处理,获得值中就会出现...
  • pursuer211
  • pursuer211
  • 2015年01月05日 17:23
  • 857

springMVC解决ajax请求乱码

最近在项目的使用过程中发现在springmvc的项目中,使用返回页面的请求方式,数据都能正常显示,但是对于ajax的请求,始终显示乱码。首先第一种是因为我们在web.xml中配置了spring的字符编...
  • u013755987
  • u013755987
  • 2017年03月16日 11:26
  • 1897

AJAX传输数据的中文乱码之完全解决方案

大神的文章,佩服佩服,虽然不是完全懂。   [解决方法一] 以前我曾经贴过一篇用XMLHTTP Post Form 的帖子,那里的代码中我Post E文的Value毫无问题,但是后来发现Post...
  • w616589292
  • w616589292
  • 2014年07月01日 16:46
  • 7323

最近遇到ajax获取数据出现中文乱码问题

前提:数据库,js页面,后台编码都采用UTF-8格式 问题:ajax请求数据,在后台传递到前台的数据出现中文乱码 解决方法:在ajax请求时添加//解决编码问题 contentType: "app...
  • u014656173
  • u014656173
  • 2017年03月28日 20:57
  • 5394

SpringMvc 遇到的坑,返回中文乱码以及Ajax跨域

前言: 最近在写一个Java Web后台时采用了spring+MyBatis+MySQL的方式.记录下遇到的关键问题 接口返回数据相关 使用@ResponseBody后返回NUll...
  • qq_34120041
  • qq_34120041
  • 2017年01月06日 17:43
  • 336
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Ajax乱码问题整理
举报原因:
原因补充:

(最多只允许输入30个字)