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

encodeURIComponent编码后java后台的解码

    博客分类:
  • JS
阅读更多

同学的毕业设计出现JavaScript用encodeURIComponentt编码后无法再后台解码的问题。

原来他是这样写的:

window.self.location="searchbytext.action?searchtext="+encodeURIComponent(seartext);

java处理的代码为:

searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");/*需要处理异常*/

咋一看觉的没问题啊,一编一解的,应该可以了。但还是出现了乱码。

后来网搜资料,发现原来在对后台java程序里的searchtext赋值的时候,本身已经使用了一次解码,不过解码的结果依然不对。所以我们可以在页面上进行两次编码操作,这样后台自动的那次就可以抵消掉一次,然后在使用searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");/*需要处理异常*/进行一次解码就好了。

正确的代码:

JavaScript:

window.self.location="searchbytext.action?searchtext="+encodeURIComponent(encodeURIComponent(seartext));

java:

searchtext=java.net.URLDecoder.decode(searchtext,"UTF-8");/*需要处理异常*/

另外还有一种方法是JavaScript进行一次编码,后台java处理时换种想法就好了:

java代码:

String s = new String(request.getParameter("name").getBytes("ISO8859-1"), "UTF-8");

分享到:
评论
2 楼 readythink 2012-03-30  
wskiwwwx 写道
误导人大哥

可以用,有问题吗?
1 楼 wskiwwwx 2011-04-14  
误导人大哥

相关推荐

    JavaScript、JavaWeb对汉字等的编码与解码处理

    在Java后台处理中,也可以使用decodeURI、decodeURIComponent函数来解码URI中的编码字符串。 JavaScript和JavaWeb对汉字编码的策略非常重要,正确的编码和解码处理对于确保数据的正确传输和显示至关重要。

    extjs 前后台交互参数出现中文乱码问题的解决方法

    在前端使用ExtJS框架时,可以通过`encodeURI()`或`encodeURIComponent()`函数来对中文字符进行编码。示例代码如下: ```javascript // 定义一个变量用于存储用户输入的中文字符串 var CustomFormName = Ext....

    url传值异常java.io.CharConversionException: isHexDigit

    总结起来,当遇到"java.io.CharConversionException: isHexDigit"异常时,应该检查前端传递的URL参数是否正确编码,并确保在服务器端使用正确的解码方法和字符集。使用`encodeURI`或`encodeURIComponent`函数代替`...

    页面中文和后台服务器端接收中文乱码问题完全解决

    这里需要注意的是,服务器端必须明确指定使用`UTF-8`编码进行解码操作,这样才能保证解码后的结果与客户端原始提交的数据一致。 #### 实践案例 假设有一个简单的HTML表单,用户输入中文内容后提交给服务器端处理...

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

    这种方法下,后台Action无需额外进行解码操作,因为jQuery已将参数进行了一次`encodeURIComponent`处理。 **C++与Java的设计选择对比** 虽然这个问题主要涉及Ajax的中文乱码解决方案,但提到了C++与Java的对比。...

    java+springmvc+html2cavas转化图片后台处理.pdf

    例如,将"+"替换为"%2B",将"="替换为"&3D",并进行两次encodeURIComponent编码。最后通过Ajax发送到服务器。 4. **Ajax发送Base64数据**:使用jQuery的Ajax方法,以POST方式发送图片Base64数据到服务器,URL为`...

    web开发中url乱码处理

    3. **Java后台处理**: - **方法1**:在后台接收参数时,首先将接收到的ISO-8859-1编码的字符串转换为字节数组,然后使用这个字节数组创建UTF-8编码的字符串。例如: ```java String inStr = request....

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

    前端需要使用`encodeURI()`或`encodeURIComponent()`进行编码,后端则需要使用相应的解码函数,并且在整个过程中保持字符集的一致性。同时,正确设置请求头和响应头也是避免乱码问题的重要环节。通过以上方法,可以...

    struts2乱码处理

    - 对含有中文的参数进行编码:`encodeURIComponent(encodeURIComponent("XXX"))`,其中“XXX”是含有中文的参数值。 2. **后端处理**: - 使用`URLDecoder.decode("XXX", "UTF-8")`解码。其中,“XXX”是前台传递...

    Ajax FireFox IE 乱码兼容问题

    因此,必须先将其转回ISO-8859-1编码,再按照客户端的编码格式(如UTF-8)进行解码,才能正确读取中文等多字节字符。 ```java HttpServletRequest request = ServletActionContext.getRequest(); try { String key...

    Ajax百度搜索项目实例源码整理

    在JavaScript中,可以使用`encodeURIComponent()`函数进行编码,而在Java后端则需要解码,如使用`URLEncoder.decode()`方法。 6. **错误处理**:在处理Ajax请求时,我们需要考虑网络问题、服务器错误等各种异常情况...

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

    服务器接收到编码后的请求参数后,需要按照正确的编码格式进行解码,才能正确解析客户端发来的数据。在Java中,可以通过指定字符编码,如UTF-8,来解码获取到的请求参数,例如: ```java String fileName = request...

    flex 文件上传 预览下载 及中文名乱码解决问题

    对于中文文件名的处理,需要在URL中正确编码中文字符,一般使用`encodeURIComponent()`函数进行编码,服务器接收到请求后解码并返回正确的文件。如果服务器支持动态设置文件名,还可以在HTTP响应头的`Content-...

    夏玉保整理Ajax学习笔记.doc

    一种解决方案是先在客户端使用`encodeURI()`或`encodeURIComponent()`函数对中文字符进行编码,然后在服务器端进行解码。对于Firefox,这种方式通常有效,但在IE中可能需要额外处理。对于IE,建议直接使用`encodeURI...

    flex 案例

    // 对提交给后台的参数进行 UTF-8 的编码处理 private function httpEncoding(param:String):String{ return encodeURIComponent(param); } private function doLogin():void { var url:String = ...

    JS传值出现中文参数乱码的解决方法

    在后台Action中,接收到URL参数后,需要使用相应的解码方法将其还原。在Java中,可以使用`java.net.URLDecoder`类的`decode()`方法来解码URL参数。例如: ```java String cNum = contract.getContractNum(); ...

    JS解决url传值出现中文乱码的另类办法

    为了解决这个问题,开发者通常会在前端对中文参数进行编码,如使用encodeURIComponent函数,然后在后台解码,通常是用UTF-8字符集解码。然而,这种做法增加了代码的复杂性,并且每次传递都需要进行编码解码操作。 ...

    jsp传值本地无乱码测试机出现乱码问题解决

    - 在涉及客户端与服务器端编码转换的JavaScript函数中,正确使用`encodeURI`或`encodeURIComponent`进行编码,避免重复编码导致的乱码问题。在上述代码中,`encodeURI`被错误地调用了两次。 ```javascript ...

Global site tag (gtag.js) - Google Analytics