`
wh8766
  • 浏览: 35683 次
  • 性别: 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传参是乱码解决方案

    本文将详细介绍几种常见的解决Ajax传参乱码的方法,并通过具体的示例代码来帮助大家理解和掌握。 #### 一、理解乱码产生的原因 在讨论解决方案之前,我们需要先了解乱码产生的根本原因。乱码通常是因为字符编码不...

    前后台传值乱码问题万能思想,通用

    2. **Ajax POST/GET请求**:异步请求中传递的数据可能会遇到乱码问题。 3. **自动加载**:页面自动获取数据时,如JSONP或Websocket通信。 4. **发送连接请求**:如HTTP GET请求的URL参数或POST请求的Body内容。 ...

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

    通过以上步骤,大部分情况下可以有效解决jQuery AJAX请求中的中文乱码问题。然而,每个环境和服务器配置可能略有不同,所以可能需要根据实际情况进行调整。了解这些基础知识后,开发者就能更好地应对类似问题,保证...

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

    然而,当使用Ajax传递包含中文字符的参数时,由于编码和解码的不统一,经常会出现乱码问题。为解决这一问题,本文将详细介绍一种有效的方法来确保中文参数能够正确无误地传递到后端。 首先,要了解的是,乱码问题的...

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

    在使用jQuery的ajax()函数进行数据传输时,中文乱码问题常常困扰着开发者。这个问题主要出现在数据发送到服务器时,由于编码格式不一致导致的字符乱码。以下是一些解决此问题的方法: 方法一:使用`encodeURI()`...

    ajax与Servlet,传值Demo

    这个“ajax与Servlet,传值Demo”着重展示了如何利用Ajax实现页面局部更新,同时处理Servlet接收到的Ajax传递的数据,包括解决中文乱码问题。 Ajax的核心在于JavaScript,它允许网页在不重新加载整个页面的情况下与...

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

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

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

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

    Ajax 对象 包含post和get两种异步传输方式

    最后,在Ajax请求中处理异步回调时,还需要注意函数的执行顺序和作用域问题,因为JavaScript的异步性质可能会导致回调函数的执行时机和预期不一致。利用闭包、Promise或async/await等ES6特性可以帮助我们更好地组织...

    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+...

    SmartClient资料

    26. **JS传递中文参数乱码**:当JavaScript传递包含中文字符的参数时,可能会出现乱码问题,解决方法通常涉及到字符编码转换。 这些知识点涵盖了SmartClient的核心组件、数据管理、用户交互、前后端通信等多个方面...

    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秒...

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

    }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