ajax中文乱码问题解决方案

ajax中文乱码问题在中文中经常会出现这种问题,其实只要稍加注意就不会出现ajax中文乱码这回事情了,注意前后台编码一致.你用的是中文.而ajax传输数据的时候用的是utf-8 ,还有对ajax get方法时最好escape 或urlcode,


代码如下:

<%@ page contenttype="text/html;charset=gb2312%>

如果是用servlet就加


代码如下:

response.setcontenttype("text/html;charset=gb2312");
request.setcharacterencoding("gb2312");

还有一个更好的方法就是在加一个filter
在其中加入


代码如下:

response.setcontenttype("text/html;charset=gb2312");
request.setcharacterencoding("gb2312");

一切都解决了
再说一下从客户端上传数据,就必须在服务端进行编码转换


代码如下:

string param = request.getparamter("param");
param = new string(param.getbytes("iso-8859-1"),"gb2312");

现在就都是中文的了。
注意前后台编码一致.你用的是中文.而ajax传输数据的时候用的是utf-8


代码如下:

<script>
var oxmlhttp = new activexobject( "microsoft.xmlhttp ");
oxmlhttp.open( "get ", "http://dotnet.aspx.cc/content.aspx ", false);
oxmlhttp.send()
var ostream = new activexobject( "adodb.stream ");
if(ostream == null)
alert( "您的机器不支持adodb.stream. ")
else
{
ostream.type=1;
ostream.mode=3;
ostream.open() ;
ostream.write(oxmlhttp.responsebody);
ostream.position= 0;
ostream.type= 2;
ostream.charset= "gb2312 ";
var result= ostream.readtext();
ostream.close();
ostream = null;
alert( result);
}
</script>

客户端文件的编码设置为gb2312,如下面代码所示:
html代码


代码如下:

<meta http-equiv="content-type" content="text/html; charset=gb2312" />

在发送的url地址中的查询字符串或者是使用post方式发送的请求内容不要使用escape函数进行编码,切记!
在服务器端的jsp教程文件也设置为gb2312编码格式,如下面代码所示:
jsp 代码
或者设置response的头,如下面代码所示:


代码如下:

response.setheader("content-type","text/html; charset=gb2312");

两者原理是一样的。
最着关键的是在获取参数时应该对获取字符串进行重新编码,如下面代码所示:


代码如下:

string username = new string(request.getparameter("username").getbytes("iso8859_1"),"gb2312");

其中,username为接收的参数。
直接使用out.print(username);就可以将中文返回给客户端,在客户端直接使用xmlhttp.responsetext属性就可以直接使用返回的中文了!
附件中我测试用的一个小例子,在tomcat6.0和resin2.1.8中通过测试!

其实,还有一个一劳永逸的解决方案,就是添加一个过滤器。
补充一下提交方法为get时时在服务器里写的时这句代码


代码如下:

string username = new string(request.getparameter("username").getbytes("iso8859_1"),"gb2312");

为post时应该时这样吧


代码如下:

string username = new string(request.getparameter("username").getbytes("iso8859_1"),"utf-8");

(0)

相关推荐

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

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

  • ajax请求乱码的解决方法(中文乱码)

    今天遇到一个问题,有关ajax请求中传输中文,遇到乱码的问题. 如下代码: 复制代码 代码如下: function UpdateFolderInfoByCustId(folderId, folderName, custId) {    $.ajax({        type: "Post",        contentType: "application/x-www-form-urlencoded; charset=utf-8",        url: &qu

  • jquery的ajax()函数传值中文乱码解决方法介绍

    复制代码 代码如下: $.ajax({ dataType : 'json',type : 'POST',url : 'http://localhost/test/test.do',data : {id: 1, type: '商品'},success : function(data){ } } ); 问题: 提交后后台action程序时,取到的type是乱码 解决方法: 方法一:提交前采用encodeURI两次编码,记住一定是两次 1.修改以下代码 复制代码 代码如下: data:{id:1, t

  • AJAX在GB2312的中文编码传输 AJAX特殊字符编码正确方法

    很多可能在转摘过程中失真或未经验证就被转摘,真正使用时却不行,也由此决定自己全方位试验一下,努力还是没有白费,虽然最终得出的结果是很简单的,但其过程对于一个新学AJAX的人来说,真是挺累.欢迎您在使用过程中对新的心得一起跟帖交流,一个思想+一个思想,至少可以产生两个思想. 一.在GET发送时: 方法1:在ASP服务器端用Response.charset="GB2312"界定输出编码给调用客户端 此时客户端不需要做什么转换即可.如下两个文件: 1.客户端JS 复制代码 代码如下: var

  • jquery.ajax的url中传递中文乱码问题的解决方法

    JQuery JQuery默认的contentType:application/x-www-form-urlencoded 这才是JQuery正在乱码的原因,在未指定字符集的时候,是使用ISO-8859-1 ISO8859-1,通常叫做Latin-1.Latin-1包括了书写所有西方欧洲语言不可缺少的附加字符. JQuery的Ajax根本没有考虑到国际化的问题,使用了欧洲的字符集,所以才引起了传递中文出现乱码的问题. 而我们的UTF-8则可以解决这一问题. 最终指需要修改JQuery的代码,显式

  • JQuery中使用ajax传输超大数据的解决方法

    直接说问题,在一个页面用了Jquery(1.6)的Ajax请求,用的post,传递显示的数组有500多条.php端却只能接受到50条左右.刚开始以为是web服务器设置的问题,把,max_upload_size这类的都改了.但是没有效果,后来尝试用max_input_vars这个是新玩艺,刚开始还有点作用.后来,客户的数据超过2000的时候,还是一样,php端还是不能完全接受到ajax发送过来的数据.最后,在国外的一网站上,找到了解决方案. 在post发送前,将要发送的变量用JSON.string

  • JQuery AJAX 中文乱码问题解决

    解决方案: 提交和接收均为utf-8或gbk编码 对提交的数据调用JQuery函数encodeURI进行编码再提交或显示或链接既可 url = encodeURI(url);   //url为数据. 注:注意浏览器和发布的项目的缓存问题,很多时候会影响解决. 记事本默认gbk编码

  • jsp中 ajax的get请求的中文乱码问题的解决方法

    一般Tocant 的url编码是iso-8859-1(查看tocat/conf/server.xml 中的Connector 节点没有写URIEncoding="xxxxxx") 如下: 复制代码 代码如下: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 如果

  • 解决ajax+php中文乱码的方法详解

    中文如果用表单提交的话,不会出现乱码,而用ajax提交就会出现乱码,这是什么原因呢? 我的理解是,我在写源码的时候,一般用记事本写,保存的时候默认用ANSI编码,源码中也没有用"<meta http-equiv=Content-Type content=text/html;charset=UTF-8>"或"header('Content-Type:text/html;charset=UTF-8');"指定网页编码,于是在浏览器中显示时它的编码被认定为&q

  • ajax中文乱码问题解决方案

    ajax中文乱码问题在中文中经常会出现这种问题,其实只要稍加注意就不会出现ajax中文乱码这回事情了,注意前后台编码一致.你用的是中文.而ajax传输数据的时候用的是utf-8 ,还有对ajax get方法时最好escape 或urlcode, 复制代码 代码如下: <%@ page contenttype="text/html;charset=gb2312%> 如果是用servlet就加 复制代码 代码如下: response.setcontenttype("text/h

  • Javascript和Ajax中文乱码吐血版解决方案

    今天弄了一天的Ajax中文乱码问题,Ajax的乱码问题分为两种: 1. JavaScript输出的中文乱码, 比如:alert("中文乱码测试"); 解决的办法比较简单,就是把jsp里所有的charset和pageEncoding的值都设置成相同的,一般是utf-8. 2. 这第二种就是Ajax从服务器端获得的数据出现乱码的问题.(我搜了n个小时试了n中方法才找到答案) 现在将我搜集的比较有效的方法都与大家分享:(我使用的开发环境是Eclipse,相信其他语言和开发环境都差不太多.)

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

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

  • MySql安装步骤图文教程及中文乱码的解决方案

    MySql Server安装步骤如下所示: 1安装MySql Server 2 安装MySqlServer管理工具 解压中文语言包,将文件复制到安装目录下覆盖 文件覆盖后,打开软件设置语言为中文(CN) 3 MySqlServer开发注意事项(C#) 1.联接字符串:"Server=localhost;Database=100;Uid=root;Pwd='root'" 2.引用MySql.Data.dll;using MySql.Data.MySqlClient; 3.使用MySqlC

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

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

  • pyftplib中文乱码问题解决方案

    这篇文章主要介绍了pyftplib中文乱码问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 采用pyftpdlib启动ftp服务端,ftp客户端在上传文件的时候,如果不指定字符编码,如果遇到中文,可能会乱码:网上找了很多资料,但是他们的客户端都是基于python实现的.还是没法解决我得问题 于是重新:FTPHandler的decode方法 def decode(self, bytes): return bytes.decode('ut

  • Sublime Text 打开Java文档中文乱码的解决方案

    问题: 打开文档后出现中文乱码如图 1.在安装插件之前,首先要安装package control这个组件,才能够给Sublime Text安装各种插件 打开Sublime Text,按 ctrl+` 或者点击菜单栏 View下的Show Console 调出console == Sublime Text2 对于Sublime Text2,输入粘贴以下代码到底部命令行,并回车 import urllib2,os,hashlib; h = 'df21e130d211cfc94d9b0905775a7

  • springboot参数传中文乱码的解决方案

    前言 本文案例来自业务部门的一个业务场景.他们的业务场景是他们部门研发了一个微服务上下文透传组件,其透传原理也挺简单的,就是通过springboot拦截器把请求参数塞进threadlocal,然后下游通过threadlocal取到值,服务之间进行feign调用时,再把threadlocal的参数塞到header头里面.这个组件一直用得好好的,突然有一天因为传的参数值是中文,导致乱码.他们通过尝试下面的各种方案,都无法解决.最后就让我们部门排查处理. 业务部门的实现思路 他们一开始的思路方向是参数

  • SpringMVC 中文乱码的解决方案

    背景 举个例子,出现中文乱码的例子:提交表单的时候. 表单 <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <form action="/c02/t1" method=&quo

  • SpringMVC Restful风格与中文乱码问题解决方案介绍

    目录 基本要点 1.定义 2.传统方式与Restful风格的区别 3.如何使用Restful风格 4.为什么要用restful 5.乱码问题 基本要点 1.定义 根据百度百科的定义,RESTFUL是一种网络应用程序的设计风格和开发方式 2.传统方式与Restful风格的区别 在我们学习restful风格之前,我们请求接口,都是使用http://localhost:8080/controller?method=add这种方式携带接口所需要的参数 而调用restful风格的接口时,我们可以改成htt

随机推荐