`
java_mike
  • 浏览: 85330 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

AJAX中文乱码解决

阅读更多
   以下是我的AJAX中文乱码的解决方案:

客户端对url进行两次转码:(str可能是中文)
...
var url = 'policy.do?method=searchSuggest&word=' + str+"&now="+new Date().getTime();
url = encodeURI(url);
url = encodeURI(url);
...


服务器段对参数值进行解码:

...
String word = request.getParameter("word");
word = java.net.URLDecoder.decode(word,"UTF-8");
...
分享到:
评论
16 楼 tkl211 2009-08-26  
JSP页面:var para2=encodeURI($("#tx_name").val());
服务器端(也是jsp页面,jsp页面的charset是GBK类型):java.net.URLDecoder.decode(param2,"utf-8");
我是这样的,中文也能获取到,没问题的
15 楼 wensong 2009-08-25  
学习了。。。
14 楼 d-jasonlee 2009-08-25  
GET方式传中文参数的问题我以前遇到过。
以前有次想做一个中文搜索功能,参数是GET方式传的,因为希望用户可以把搜索结果页面的URL 方便的发给别人,就是在INPUT里输入搜索的中文单词,然后点搜索,然后复制地址栏里的URL,然后粘贴给其他朋友。
后来发现做到所有浏览器都支持太困难了,不知道是不是我至今都没理解。
不同的浏览器对URI的处理不一样,处理时使用的编码也不一样。所以你在FF上的URL复制到另一个浏览器的URL里有可能就会成为无效链接……
不知道我理解的对不对,总之我说的那个程序至今没实现。
13 楼 cnboss 2009-08-25  
所有的地方都用utf-8,包括js文件存储编码。
12 楼 neptune 2009-08-25  
var url = 'policy.do?method=searchSuggest&word=' + encodeURIComponent(str)+"&now="+new Date().getTime(); 
11 楼 makemyownlife 2009-08-25  
做Ajax编码方面的操作的时候,应该考虑不同的浏览器,也要考虑工作空间的编码问题,
我做过一个测试,在firefox下没有必要使用转换编码操作.
10 楼 习惯在马桶上思考 2009-08-25  
之前在处理AJAX时我也碰到类似的问题...转了2次,但最后特殊情况问题还是不能解决.最后是用BASE64来做的,客户端与服务器分开处理....结果OK
9 楼 java_mike 2009-08-25  
学习了......
8 楼 deyami 2009-08-25  
<div class="quote_title">java_mike 写道</div>
<div class="quote_div">   以下是我的AJAX中文乱码的解决方案: <br><br>客户端对url进行两次转码:(str可能是中文) <br><pre name="code" class="js">...
var url = 'policy.do?method=searchSuggest&amp;word=' + str+"&amp;now="+new Date().getTime();
url = encodeURI(url);
url = encodeURI(url);
...
</pre>
<br><br>服务器段对参数值进行解码: <br><br><pre name="code" class="java">...
String word = request.getParameter("word");
word = java.net.URLDecoder.decode(word,"UTF-8");
...
</pre>
</div>
<p><br></p>
<p> </p>
<p> </p>
<p> </p>
<p> String word = request.getParameter("word");<br>word = java.net.URLDecoder.decode(word,"UTF-8");</p>
<p>其实这一步是可以简化的。有这么几种做法,很常见:</p>
<p> </p>
<p>1.客户端提交时使用encodeURI或者encodeurIcompent参数来进行utf-8编码,然后发送给服务器,如果使用post方式的话可以通过request.setCharacterEncoding来设定用来解读参数的编码。如果用get方式的话,使用new String(arg.getBytes("iso-8859-1"),"utf-8")的方式来转码。</p>
<p> </p>
<p>2.发送ajax请求时,请使用post方式,由于AJAX默认使用utf-8的编码提交参数,因此如果不是文件上传得话,为ajax的Content-Type请求头设置"application/x-www-form-urlencoded;charset="utf-8",以此来通知服务器,客户端发送参数所使用的编码。这样,服务器端可以直接通过String word = request.getParameter("word");来获取经过转码后的参数值,省去了request.setCharacterEncoding。</p>
<p>以上是我的理解,不知道是不是有错的地方,欢迎拍砖</p>
<p> </p>
7 楼 jiyanliang 2009-08-25  
java_mike 写道
我也不是很清楚,一次不行! 

request.getParameter做的怪。。。
要是使用struts2的自动类型转换就不用encodeURI两次了
6 楼 java_mike 2009-08-25  
我也不是很清楚,一次不行! 
5 楼 jiyanliang 2009-08-25  
java_mike 写道
   以下是我的AJAX中文乱码的解决方案:

客户端对url进行两次转码:(str可能是中文)
...
var url = 'policy.do?method=searchSuggest&word=' + str+"&now="+new Date().getTime();
url = encodeURI(url);
url = encodeURI(url);
...


服务器段对参数值进行解码:

...
String word = request.getParameter("word");
word = java.net.URLDecoder.decode(word,"UTF-8");
...

奇怪,为什么要endodeURI两次呢?
4 楼 曾经de迷茫 2009-08-25  

还可以利用js进行HEX加密,java解密.

怎么不能删除留言啊,一不小心点错了,又要被扣分..
3 楼 peacock 2009-08-24  
文件编码=数据库编码=输出编码=网页编码
2 楼 java_mike 2009-08-24  
编码后再传?  可以代码体现下吗?
1 楼 andilyliao 2009-08-24  
你这样传值就不是一个好办法,不如编码后再传,用urlencode

相关推荐

    Ajax中文乱码问题解决方案

    本文将深入探讨Ajax中文乱码问题的成因,并提供一系列解决方案。 **一、问题原因** 1. **编码格式不一致**:服务器与客户端(浏览器)之间使用的字符编码格式不同,例如服务器使用GBK编码,而浏览器使用UTF-8编码...

    GBK编码下jQuery_Ajax中文乱码解决方案

    ### GBK编码下jQuery_Ajax中文乱码解决方案 #### 背景介绍 在Web开发过程中,使用Ajax技术与服务器端交互数据时经常会遇到字符集编码的问题,尤其是在使用GBK编码的环境中,通过jQuery发起的Ajax请求往往会导致...

    jquery+asp ajax 中文乱码问题解决文档

    ### jQuery + ASP AJAX 中文乱码问题解决方案 在开发基于jQuery和ASP的Web应用程序时,中文乱码问题可能成为困扰开发者的一大难题。特别是在使用Ajax进行前后端数据交互时,中文字符可能会出现乱码现象,影响用户...

    ajax中文乱码如何解决

    针对Ajax中文乱码问题,这里提出一个解决方案,这个方案在作者的开发环境中(XP, Eclipse, GB18030编码)已经成功解决了问题: 1. **设置请求头**: 在发送POST请求前,需要设置Content-Type头,告诉服务器数据的...

    Ajax 中文乱码问题

    本文将详细探讨如何解决Ajax请求过程中的中文乱码问题,并提供具体的解决方案。 #### 二、问题分析 在使用Ajax进行数据传输时,中文乱码问题通常出现在以下两个环节: 1. **发送表单数据时中文乱码**:当通过Ajax...

    Ajax中文乱码问题解决方法

    本文将深入探讨Ajax中文乱码问题的原因及其解决方案。 首先,我们需要理解Ajax乱码的根源。当JavaScript发送HTTP请求时,如果服务器和客户端之间关于字符编码的约定不一致,就会导致乱码。常见的原因包括: 1. **...

    ajax提交中文乱码解决方法

    ### AJAX提交中文乱码解决方法 在Web开发中,AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过JavaScript发起异步请求,与服务器进行数据交换,从而...

    c# ajax post数据乱码解决

    本文将详细讲解如何解决C# Ajax Post数据乱码问题。 ### 一、理解问题根源 首先,我们需要了解为什么会出现乱码的情况。这通常是因为客户端和服务器端对于字符编码的理解不一致所导致的。具体来说,如果客户端使用...

    ajax乱码解决方案

    **Ajax 乱码解决方案** Ajax 乱码问题在开发Web应用程序时经常遇到,尤其是在涉及到不同编码格式时。本文将深入探讨Ajax与字符编码相关的技术细节,并提供几种有效的解决策略。 首先,JavaScript处理字符的方式是...

    java认证_Ajax中文乱码问题及解决方法.doc

    【Java认证:Ajax中文乱码问题及解决方法】 在Java Web开发中,使用Ajax进行异步数据交互时,经常会遇到中文乱码的问题。这主要涉及到字符编码的处理,特别是当Ajax请求发送的数据包含中文字符时。以下是两种常见的...

    AJAX中文乱码解决新方法分享

    为了解决AJAX中文乱码问题,常见的方法包括: 1. 使用encodeURIComponent进行编码 通过对发送的数据使用encodeURIComponent函数进行编码,可以转换数据格式,使其适应URL传输规范。然后,需要确保服务器端使用相应...

    Ajax乱码解决方案(docx)

    3. **JSP和Struts的乱码解决方案** - 使用过滤器(如`SetCharacterEncodingFilter`)设定请求和响应的编码为UTF-8,确保数据在传输过程中不会出现乱码。 - 对于JSP页面,可以在页面顶部添加`;charset=UTF-8" %&gt;`来...

    ajax到servlet乱码解决

    AJAX 到 Servlet 乱码解决方案 在 Web 开发中,使用 AJAX 通过 URL 传参数给 Servlet 时,经常会遇到乱码问题,即使使用了统一的字符编码也没用。下面我们来探讨这个问题的解决方案。 问题描述 当我们使用 AJAX ...

    ajax提交,后台中文乱码解决

    本文将基于提供的文件信息,详细解析两种解决Ajax提交后台取值中文乱码的方法。 ### 方法一:使用URL编码 在第一个示例中,开发者通过调用`encodeURIComponent()`或`encodeURI()`函数对请求URL中的参数进行编码。...

    ajax传递中文参数乱码解决办法

    ### AJAX传递中文参数乱码解决办法 在Web开发过程中,数据传输是不可或缺的一部分,而AJAX作为一种无需重新加载整个页面的情况下就能与服务器交换数据的技术,被广泛应用于动态数据交互场景中。然而,在处理中文等...

    Struts框架下Ajax发送中文乱码问题的解决

    总结来说,解决Struts框架下Ajax发送中文乱码问题的关键在于: 1. 确保Ajax请求时设置正确的`Content-Type`,以UTF-8编码发送数据。 2. 在Struts配置文件中配置`CharacterEncodingFilter`或在Action中手动设置请求...

    ajax解决中文乱码(java/jsp)

    ### AJAX解决中文乱码(Java/JSP) #### 知识点概述 在Web开发中,尤其是在使用Java与JSP技术栈进行开发时,经常会遇到的一个问题是:如何处理AJAX请求中的中文字符乱码问题。本篇文章将详细介绍如何通过前端编码...

    AJAX中文乱码

    ### AJAX中文乱码解决方案 在Web开发中,尤其是使用AJAX技术进行前后端交互时,中文乱码问题是一个常见的挑战。AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的...

Global site tag (gtag.js) - Google Analytics