`
wh8766
  • 浏览: 34831 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Ajax中传参乱码问题

阅读更多
首先是CSDNzhanngle朋友的帖子
http://blog.csdn.net/zhanngle/archive/2008/01/24/2063490.aspx

1.这个是最不会一次解决的东西
new String(string.getBytes("ISO8859-1"),"GBK");

2.接下来是对JS和servlet做手脚
js
var v = document.getElementById("test").value;
v=encodeURI(v); //最重要的部分,两次调用encodeURI ,就是编码两次
v=encodeURI(v); 

servlet
String n2 =  URLDecoder.decode(test, "utf-8");
很艰难的输出了汉字..
博主指出:不推荐使用,URLDecoder.decode()与新浏览器不兼容
(JavaScript文档)关于encodeURI()和escape()
escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。
可以使用 unescape() 对 escape() 编码的字符串进行解码。
ECMAScript v3 反对使用该方法,应用使用 decodeURI() 和 decodeURIComponent()
替代它。
当然 如果使用escape方法代替encodeURI,也是需要进行两次编码

response.setContentType("text/html;charset=GBK");
response.setCharacterEncoding( "GBK" );
PrintWriter out = response.getWriter();
String test = request.getParameter("test");
String n = new String (test.getBytes("ISO-8859-1"),"GBK");
String n2 =  URLDecoder.decode(test, "GBK");

不明白在JS不用做任何事情的情况下
只有使用String n = new String (test.getBytes("ISO-8859-1"),"GBK");
就能得到正确的字符串

不是有说JS是用utf-8来发送信息的么?
如果这里把String n = new String (test.getBytes("ISO-8859-1"),"GBK");中的
GBK换为UTF-8 依然是乱码(包含单独替换和上面的所有涉及到编码地方的替换..)

在参考以下帖子后
http://chenlb.blogjava.net/archive/2007/10/13/152638.html除非是在发送请求前对URL的编码已经进行了处理 比如encodeURI();一次
在servlet中只需要URLDecoder.decode(url, "UTF-8");就能正确解码
分享到:
评论
2 楼 wh8766 2009-11-24  
bevis.cn 写道
其实最好的解决办法是
在javascript里把要传的参数,连续用两次encodeURIComponent进行编码


恩~ 对的 之后也一直用这样的方式了,再加上调试工具基本没见到乱码
1 楼 bevis.cn 2009-11-19  
其实最好的解决办法是
在javascript里把要传的参数,连续用两次encodeURIComponent进行编码,
然后在servlet先设一下requeest的编码为utf-8
然后用java.url里的解码工具,解一次码就可以了!

这种为方法我用过很多次,都没有出过错,而且传中文都不会有问题!

相关推荐

    Ajax传参是乱码解决方案

    在web开发是经常会遇到乱码,该文件为Ajax传参是出现的乱码提供了一些常用的决绝方法,非常使用。

    jQuery ajax方法传递中文时出现中文乱码的解决方法

    使用jQuery的ajax方法,在传递中文时出现中文乱码,按照以前的方法,修改了jquery文件中的ajaxSetting也不好使 复制代码 代码如下:sajaxSettings:{url:location.href,global:true,type:”GET”,contentType:”...

    Ajax传递中文参数到后台乱码的有效解决方法

    使用Ajax传递中文参数,如果不对参数进行处理的话,传到后台会变成乱码,解决方法很简单,需要的朋友可以参考下本

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

    jquery的ajax()函数传值中文乱码解决方法介绍,需要的朋友可以参考下

    有关Ajax中get和post的使用问题

    乱码,当传递中文或者特殊字符的时候,前台显示出现乱码 解决办法:使用编码encodeURI(‘蜗牛’) 测试结果:通过使用Chrome测试,结果get的两种问题,都已经得到了解决 使用post遇到的问题: post方式,

    ajax与Servlet,传值Demo

    ajax与Servlet,传值Demo,包含ajax传值乱码转换

    STRUTS+AJAX+JSP 请求到后台乱码问题解决方法

    在AJAX请求URL之前 把参数进行encodeURI()转码。 如: 代码如下: var fileName=... 您可能感兴趣的文章:JSP struts2 url传参中文乱码解决办法JSP 开发之Struts2内建自定义拦截器java+jsp+struts2实现发送邮件功

    IE浏览器与FF浏览器关于Ajax传递参数值为中文时的区别实例分析

    前面介绍了《Javascript基于AJAX回调函数传递参数》,这里主要来分析一下ajax传递中文参数过程中针对不同浏览器的乱码处理方法。 Ajax传递参数为中文时出现乱码,我遇到的情况是: 1.我的数据库连接 编码为 GB2312,...

    java web技术开发大全(最全最新)

    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》介绍了Web开发中客户端技术的基础知识,包括JavaScript、CSS、AJAX等,这些技术都是Web应用中常用的客户端技术。 《Java Web开发技术大全:JSP+...

    java web开发技术大全

    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》介绍了Web开发中客户端技术的基础知识,包括JavaScript、CSS、AJAX等,这些技术都是Web应用中常用的客户端技术。 《Java Web开发技术大全:JSP+...

    PHP入门到精通

    20.4解决数据库乱码问题 第3篇 高级应用 PHP网络开发(教学录像:42分33秒) 21.1电子邮件的原理 21.2系统的配置需求(SMTP和POP3服务器安装配置) 21.3应用PHP发送和接收电子邮件 PHP与XML技术(教学录像:31分17秒...

    PHP入门到精通02

    20.4解决数据库乱码问题 第3篇 高级应用 PHP网络开发(教学录像:42分33秒) 21.1电子邮件的原理 21.2系统的配置需求(SMTP和POP3服务器安装配置) 21.3应用PHP发送和接收电子邮件 PHP与XML技术(教学录像:31分17秒...

    SmartClient资料

    目 录 SmartClient 介绍 2 智能客户端技术 3 smartclient--练习 8 smartclient--listgrid 12 smartclient 整合 15 smartclient --registervalidate 22 smartclient 连接数据库 24 ...JS传递中文参数乱码 90

    【尚硅谷】徐靖博 最新电商项目实战(完结)

    }2 b9 E( w8 I 59.04 商品分类检索列表 60.05 商品属性检索介绍 61.06 ajax字符串数组传参 62.07 ajax字符串json传参& i' g9 \7 ^! e7 _ 63.08 表单序列化传参 64.09 动态sql的设计方法" o# D. ?# R% _1 X 65.10 ...

Global site tag (gtag.js) - Google Analytics