ajax中文乱码原因分析
来源:互联网 发布:xp系统网络连接不见了 编辑:程序博客网 时间:2024/06/03 00:04
针对第一种形式的乱码,可以在每个jsp页面加上<%@ page pageEncoding="GB18030"%>注:jsp2.0适用; 或者加上<%@ page contentType="text/html; charset=GB18030"%>,“GB2312”、“GBK”、“UTF-8”也可以,反正整个系统中统一就可以。还有一种方式是使用request.setCharsetEncoding("GB18030"),可以使用Filter统一处理。
针对地址栏参数出现乱码的情况,解决方案如下(tomcat适用,其它的没有弄过):
在tomcat的配置文件:server.xml中,找到connector元素,在后面加上一个属性ERIEncoding="GB18030",GB18030是我用的编码方案,在读者的项目中,可以设定成系统中统一使用的编码方案。注意connector元素有两个,一个是针对http,一个是针对https,可以都加上。
下面讨论一下Ajax方式下的乱码问题:首先,如果整个项目使用UTF-8编码,并对request(调用xmlhttp对象的setrequestheader("contentType","text/html;charset=uft-8")方法)进行了正确的编码,就不会有乱码;如果整个项目选用了GB18030方案编码,那么一般情况下会出现乱码。产生的原因就是:xmlhttp使用了UTF-8方案对传递的参数进行编码(这也是整个项目使用UTF-8编码不出现乱码的原因)。我们可以做一个试验对此进行验证:
String str ="博客";
String newstr = new String(str.getBytes("UTF-8"),"GB18030");
如果你的系统使用的WINDOW,项目使用的是GB18030(或者GBK或者GB2312),输出newstr就会是乱码,这个乱码应该与你使用ajax提交中文“博客”所得到的乱码是一致的。 还有个问题,
String newstr2=new String(newstr.getBytes("GB18030"),"UTF-8");这样再得到一个新的字符串,这个字符串与初始的字符串str并不相同,最后一个字会是乱码,这个我不知道是什么原因,那们知道原因请告诉我一下。
这样,知道了原理就可以找方法来避免乱码了。经过试验我找到两种方法来解决Ajax的乱码问题(其实原理是一样的):
前提是使用setrequestheader方法进行了正确的编码。
一、提交中文是使用javascript的函数:encodeURI进行编码,然后到服务器端使用
先使用UTF-8编码提取参数:
request.setCharsetEncoding("UTF-8");
String str = request.getParameter("param");
然后使用下面的方式进行解码:
java.net.URIDecode.decode(str,"UTF-8")
这样就可以得到正确的参数。
二、可以使用encodeURI进行两次编码,然后在服务器端使用以下方式:
String str = request.getParameter("param");
然后使用下面的方式进行解码:
java.net.URIDecode.decode(str,"UTF-8")
- ajax中文乱码原因分析
- ajax中文乱码原因分析及解决方案
- ajax中文乱码原因分析及解决方案
- 深入分析中文乱码原因
- mysql中文乱码原因分析
- Code:Blocks 中文乱码问题原因分析和解决方法!
- Code:Blocks 中文乱码问题原因分析和解决方法
- Codeblocks中文乱码原因分析和解决 编译器设置
- Code:Blocks 中文乱码问题原因分析和解决方法!
- Codeblocks 中文乱码问题原因分析和解决方法!
- 孙鑫谈Java中文乱码问题产生原因分析
- Code:Blocks 中文乱码问题原因分析和解决方法!
- Code::Blocks 中文乱码问题原因分析和解决方法
- Code:Blocks 中文乱码问题原因分析和解决方法!
- Codeblocks中文乱码原因分析和解决…
- Code:Blocks 中文乱码问题原因分析和解决方法!
- sqlite中文乱码问题原因分析及解决
- http通信get,post 中文乱码问题原因分析
- 追MM与Java的23种设计模式
- 不可变类的含义
- 与一个非IT著名人士唐国强会面
- 汽车标志集锦
- 当你只有equals 没有hashcode
- ajax中文乱码原因分析
- 嵌入式linux下用gdbserver调试共享库
- [share]应聘Java笔试时可能出现问题
- 建立基于 DOM 的 Web 应用程序
- WINDOW运行命令大全
- ASP.NET 程序中常用的三十三种代码
- Web Part初探
- DES的JAVA实现方法
- 使用CronTrigger的CronExpression