ajax中文乱码的各种解决办法总结

由于XMLHTTP采用的是Unicode编码上传数据,而一般页面采用的是gb2312,这就造成显示页面时产生乱码.而当在获取页面时的XMLHttp返回的是utf-8编码,这就造成了显示产生乱码.

有一种解决办法就是使用encodeURIComponent加上修改 Content-Type 为 application/x-www-form-urlencoded" 来把数据统一编码成 url 格式,当然,也可以指定编码,如:“application/x-www-form-urlencoded; charset=utf-8 ”,

解决方法之一

例子:

复制代码 代码如下:

http_request = new ActiveXObject("Msxml2.XMLHTTP");

http_request.setrequestheader("content-type","application/x-www-form-urlencoded; charset=utf-8");

解决方法之二

就是在PHP文件中显示声明为GB2312

复制代码 代码如下:

header("Content-Type:text/html;charset=GB2312");

而对于发送到服务器的中文进行转码.

如下

复制代码 代码如下:

<?php

header("Content-Type:text/html;charset=GB2312");

if($_POST['content'])

{

$_POST["content"]=iconv("UTF-8","gb2312",$_POST["content"]);

print("内容是".$_POST['content']);

}

else

{

print("没有内容发送");

}

?>

因而这样可以解决乱码问题

jsp中ajax中文乱码

发送路径中的参数有中文,在服务器段接收参数值是乱码

例如:

var url="a.jsp?name=小李";

xmlHTTP.open ("post",url,true);

解决办法:

利用javascript的提供的escape()或encodeURI()方法

例如:

客户端:

复制代码 代码如下:

var url="a.jsp?name=小李";

url=encodeURI(url);

url=encodeURI(url); //两次,很关键[具体为什么,我也不清楚]

/********************************************/

也有人写成var url="a.jsp?name=escape("小李")";

功能和encodeURI方法类似。

复制代码 代码如下:

/********************************************/

xmlHTTP.setrequestheader("cache-control","no-cache");

xmlHTTP.setrequestheader("Content-Type","application/x-www-form-urlencoded");

xmlHTTP.setrequestheader("contentType","text/html;charset=uft-8")//指定发送数据的编码格式

xmlHTTP.open ("post",url,true);

服务器端:

复制代码 代码如下:

String name = request.getParameter("name");

name = java.net.URLDecoder.decode("name", "UTF-8");

2)返回来的responseText或responseXML的值中含有中文是乱码

原因:AJAX在接收responseText或responseXML的值的时候是按照UTF-8的格式来解码的,如果服务器段发送的数据不是UTF-8的格式,那么接收responseText或responseXML的值有可能为乱码。

解决办法:在服务器指定发送数据的格式:

在jsp文件中:

response.setContentType("text/text;charset=UTF-8");//返回的是txt文本文件

或是

response.setContentType("text/xml;charset=UTF-8");//返回的xml文件

gb2312 jquery ajax 获取数据 gb2312 是 jsp:<%@page contentType="application/json" pageEncoding="gb2312"%>这里用的json作测试,与text/html应该一样

aps:Response.Charset="gb2312"(参照网络未测试)

php:header("Content-Type:text/html; charset=gb2312");(参照网络未测试)

html:未解决 gb2312 jquery ajax 获取数据 utf-8 否   utf-8 jquery ajax 获取数据 utf-8 否   utf-8 jquery ajax 获取数据 gb2312 是 jsp:<%@page contentType="application/json" pageEncoding="gb2312"%>这里用的json作测试,与text/html应该一样

aps:Response.Charset="gb2312"(参照网络未测试)

php:header("Content-Type:text/html; charset=gb2312");(参照网络未测试)

html:未解决

时间: 2024-10-02 06:31:13

ajax中文乱码的各种解决办法总结的相关文章

ajax中文乱码的各种解决办法总结_AJAX相关

由于XMLHTTP采用的是Unicode编码上传数据,而一般页面采用的是gb2312,这就造成显示页面时产生乱码.而当在获取页面时的XMLHttp返回的是utf-8编码,这就造成了显示产生乱码. 有一种解决办法就是使用encodeURIComponent加上修改 Content-Type 为 application/x-www-form-urlencoded" 来把数据统一编码成 url 格式,当然,也可以指定编码,如:"application/x-www-form-urlencode

Ajax传输中文乱码问题的解决办法_AJAX相关

AJAX简介 AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法. AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下. ajax传输中文乱码问题描述: 我是在一个jsp页面有一个保存按钮,点击时会触发saveForm()的js函数,在saveForm()函数里经过校验后,会通过ajax发送数据请求,这样就不用通过提交表单来传输数据了,aj

Ajax传输中文乱码问题的解决办法

AJAX简介 AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法. AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下. ajax传输中文乱码问题描述: 我是在一个jsp页面有一个保存按钮,点击时会触发saveForm()的js函数,在saveForm()函数里经过校验后,会通过ajax发送数据请求,这样就不用通过提交表单来传输数据了,aj

jQuery使用serialize()表单序列化时出现中文乱码问题的解决办法_jquery

序列化中文时之所以乱码是因为.serialize()调用了encodeURLComponent方法将数据编码了 解决方法就是进行解码 原因:.serialize()自动调用了encodeURIComponent方法将数据编码了 解决方法:调用decodeURIComponent(XXX,true);将数据解码 例如: var params = jQuery("#formId").serialize(); // http request parameters. params = deco

JS中页面与页面之间超链接跳转中文乱码问题的解决办法_javascript技巧

在原页面一张图片上添加了一个链接,链接中有中文,于是出现下面的情况:   解决办法是在tomcat的server.xml文件的中加入URIEncoding="utf-8",如下: <Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443

Android Retrofit 中文乱码问题的解决办法

Android Retrofit 中文乱码问题的解决办法 使用retrofit和rxjava,提交数据时需注意,当数据中有中文时,传到后台,可能会是乱码,需处理: 解决: 1.GET请求改成POST; 2.参数Field改成Query 3.加上@FormUrlEncoded 如下: @FormUrlEncoded @POST("/test/test") Call<Response> register(@Field("name") String name)

AJAX中文乱码PHP完美解决方法

AJAX中文乱码问题,经过一个下午的努力终于完美解决,现将心得写下来,希望对那些还困绕在这个问题而头痛不已的人们有所帮助. 最近在做一个项目,遇到AJAX中文乱码问题,经过一个下午的努力终于完美解决,现将心得写下来,希望对那些还困绕在这个问题而头痛不已的人们有所帮助. 众所周知,使用AJAX传送和接收中文参数时,如果不在客户端和服务器做相应的处理就会出现乱码问题,在网上相应的文章也不少,但是有的情况下很难从中找到符合自己理想的答案,我今天就是在网上找了很多,但是都差不多,讲ASP和JSP的比较多

Javamail中的常见中文乱码问题与解决办法(综合)

解决|问题|中文|中文乱码 在使用javamail api开发邮件服务系统时,我们常常会碰到很多中文乱码问题,下面就分别介绍如何解决这些问题. 1.发送名称含中文的附件到邮件服务器,用别的邮件接收程序接收到的附件名显示为乱码 解决办法:在调用MimeBodyPart的setFileName()时使用Base64编码.例如: BASE64Encoder enc = new BASE64Encoder();//该类位于jre/lib/rt.jar中 //fds为FileDataSource实例 mb

jsp和servlet操作mysql中文乱码问题的解决办法

  自己做测试的时候用到jsp/servlet 向mysql中写数据,但是中文总是乱码,今早纠结了半天才搞定,分享给大家我的解决办法 首先看是从什么地方开始出现的乱码,只要统一编码,就不会出现乱码,下面以uft-8(个人认为最好)为例,详细说明: 1.如果乱码是从jsp页面出现的,jsp头部页面加上: 在head标签中加上标签. 2.如果乱码是在servlet中出现的,则有两种方法: 一种是在每个servlet中doget和doPost方法头部加上 request.setCharacterEnc