ajax中文乱码问题解决方案

zhangxukiss

zhangxukiss

2016-02-19 09:35

今天给大家分享的是由图老师小编精心为您推荐的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");
展开更多 50%)
分享

猜你喜欢

ajax中文乱码问题解决方案

Web开发
ajax中文乱码问题解决方案

JSP中文问题解决方案

Java JAVA基础
JSP中文问题解决方案

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

ajax中文乱码解决方案

Web开发
ajax中文乱码解决方案

Mygui中文换行问题解决方案

编程语言 网络编程
Mygui中文换行问题解决方案

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

jsp中文问题解决方案(完整版)

Web开发
jsp中文问题解决方案(完整版)

popupwindow焦点问题解决方案

编程语言 网络编程
popupwindow焦点问题解决方案

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

有时候 真希望自己是透明的 - QQ非主流分组

有时候 真希望自己是透明的 - QQ非主流分组

我用一麻袋钱上学 用这些书换钱却买不起一个麻袋 - QQ搞笑分组

我用一麻袋钱上学 用这些书换钱却买不起一个麻袋 - QQ搞笑分组
下拉加载更多内容 ↓