`

URL传递中文、Ajax传递中文,Java如何编码如何解决乱码--网上收集整理

 
阅读更多
URL传递中文、Ajax传递中文,Java如何编码如何解决乱码--网上收集整理

有的时候我们想通过URL传递中文,如下:
http://localhost:8080/crud/ServletAction?m=goModi&stuNo=000007&stuName=王五&stuSex=男

这时在servlet中通过request.getParameter("stuName")得到的stuName就是乱码
这是因为URL是iso-8859-1的字符集,URL的参数如果有中文的话,需要转字符集才行。

有人说用过滤器,但过滤器似乎不能解决这个问题。

正确的解决思路:
1)一般只要使用如下方式即可解决问题(一般用于解决URL中传递中文的乱码)
String stuName = new String(request.getParameter("name").getBytes("ISO8859-1"), "utf-8"));
也可以写一个工具类来处理
如:
/**
     * 8859_1编码 字符串转 UTF-8编码 字符串
     *
     * @param strIn
     * @return
     * @author:
     * @修改记录: ==============================================================<br>
     *        日期:Mar 8, 2010  创建方法,并实现其功能
     *        ==============================================================<br>
     */
    public static String unicodeToUtf8(String strIn) {
        String strOut = null;
       
        if (strIn == null || (strIn.trim()).equals("")) {
            return strIn;
        }
        try {
            byte[] b = strIn.getBytes("8859_1");
            strOut = new String(b, "UTF-8");
        } catch (Exception e) {
        }
        return strOut;
    }



2)这种方法不能同时使用上面的编码转换,否则还是乱码(解决URL中传递中文乱码,AJAX传递中文没试验过)
还有一种方法就是将tomcat服务器的SERVER.XML里修改 <Connector port="8826" rotocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8444" URIEncoding="UTF-8"/>
加上红色的部分,这样就能解决问题了,注意要重新启动服务器(简单易用)


3)还有一种方法就是使用js将中文转码,再在servlet中解码就可以了
具体方法见
http://hi.baidu.com/iburn/blog/item/71f755b555610a7d8ad4b24d.html
具体如何使用自己发挥吧,js很灵活的。


URL传递中文、Ajax传递中文,Java如何编码如何解决乱码


地址栏中出现汉字的情况有两种,一种是汉字出现在URL的路径部分,一种是汉字出现在URL的传参的部分,第二种情况的时候必须采用编码后传参,接受时解码的方式完成传参。js中编码有escape(),encodeURI(),encodeURIComponent()三个常用的方法,escape()常常用在提交页面和处理页面的编码格式相同的情况下(比如它们都是GB2312),encodeURI()和encodeURIComponent()的用法基本相同,区别在于encodeURIComponent()也对"?"等特殊字符进行编码。
一开始遇到中文参数的时候,使用encodeURI()进行了一遍编码,传过去后,发现解码出现问题,于是想到可能是编码方法使用错误,于是使用escape()方法,这时发现解码时抛出isHexDigit异常。借助百度搜索isHexDigit异常,
发现原来,是escape()方法造成了异常,同时了解了浏览器传递地址的一些原理,在浏览器地址栏里,浏览器认为%是个转义字符,浏览器会把%与%之间的编码,两位两位取出后进行解码,然后再传递给处理页面,
然后由处理页面进行再次解码。由此我想到一直使用encodeURI方法是正确的,只是需要使用两次encodeURI方法,例如encodeURI(encodeURI("中文"));第一次是把中文编码成%xy的格式,
第二次是对%xy中的%进行编码,%编码成%25。整个传参过程大体应该是:提交页面使用encodeURI(encodeURI("中文"))编码,把最后的编码结果%25xy传递给处理页面的过程中,浏览器获取URL地址
(注意openModelDialog方法,浏览器获取不到参数编码)后解码成%xy,然后把%xy传递给处理页面,处理页面使用URLDecoder.decode(request.getParameter("参数名"),"UTF-8");完成解码。
总结:
1、汉字出现在URL路径部分的时候不需要编码解码;
2、使用encodeURI进行2次编码;
3、在openModelDialog()打开的模式窗体里没办法用request.getParameter正确获取参数;
分享到:
评论

相关推荐

    Ajax中文乱码问题解决方案

    然而,在处理中文字符时,Ajax请求可能会遇到乱码问题,这主要是由于编码格式不一致或者处理不当导致的。本文将深入探讨Ajax中文乱码问题的成因,并提供一系列解决方案。 **一、问题原因** 1. **编码格式不一致**...

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

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

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

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

    ajax乱码解决方案

    UTF-8编码是一种常见的Unicode实现,它使用1到4个字节来表示每个Unicode字符,对于中文汉字,通常每个字占用3个字节。因此,当Ajax发送或接收UTF-8编码的数据时,理论上不应出现乱码。 然而,乱码问题可能源于以下...

    解决JS传递中文乱码问题

    ### 解决JS传递中文乱码问题 在Web开发过程中,我们经常会遇到中文字符编码的问题,尤其是在前后端数据交互时,中文字符的乱码问题更是让人头疼。本文将深入探讨如何解决JavaScript(简称JS)在传递中文字符时出现...

    ajax到servlet乱码解决

    例如,我们使用 AJAX 通过 URL 传递中文参数 "中文测试" 给 Servlet,Servlet 在接收参数时却变成了乱码 "�������"。这使得我们的应用程序无法正确地处理中文参数。 解决方案 要解决这个问题,我们可以从两...

    AJAX技术使用XMLHttpRequest对象传递参数的中文乱码问题

    综上所述,解决AJAX技术使用`XMLHttpRequest`对象传递参数时出现的中文乱码问题,关键在于保持客户端与服务器端的编码一致性。通过合理设置请求头、使用适当的编码和解码函数,可以有效避免此类问题的发生。此外,在...

    解决ajax乱码和页面传值问题

    如果数据包含中文或其他非ASCII字符,使用`encodeURIComponent()`函数进行URL编码,避免在传输过程中出现乱码。 ```javascript let data = { username: "张三", message: "你好,世界!" }; let encodedData = ...

    JAVA 乱码问题集合

    1. **AJAX响应乱码**:在使用AJAX进行数据交互时,如果返回的数据包含中文,需要确保服务器端输出的响应使用正确的编码。例如,代码`new PrintWriter(new OutputStreamWriter(resp.getOutputStream(), "utf-8"))`...

    Ajax FireFox IE 乱码兼容问题

    在IT领域,特别是Web开发中,字符编码的处理是一大挑战,尤其是在跨浏览器、跨平台的环境下,如在Ajax请求中遇到的FireFox与IE之间的乱码兼容问题。本文将深入探讨这一问题,并提供详细的解决方案。 ### Ajax与字符...

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

    ### extjs前后台交互参数出现中文乱码问题的解决方法 #### 问题背景与原因分析 在使用MyEclipse开发工具进行Web应用开发时,尤其是采用ExtJS框架结合Ajax技术进行前后端数据交互的过程中,可能会遇到一个常见的...

    Ajax乱码解决办法

    然而,在使用Ajax进行数据交互时,经常会出现字符编码问题,导致乱码。本文将详细探讨Ajax乱码的产生原因以及解决方案。 ### 一、乱码产生的原因 1. **服务器端编码不一致**:如果服务器返回的数据编码格式与...

    json 中文乱码解决方案

    ### json 中文乱码解决方案 在处理JSON数据时,经常会出现中文乱码的问题,尤其是在不同编码格式间进行转换时更为常见。本文将详细介绍如何解决JSON中的中文乱码问题,并提供几种简单实用的方法来帮助开发者避免这...

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

    当传递包含中文字符的数据时,如果编码处理不当,就可能出现乱码。这是因为不同的编码格式(如GBK、ISO-8859-1、UTF-8等)对中文字符的表示方式不同,如果前后端没有统一的编码标准,就会造成解析错误。 在jQuery中...

    JSP乱码终极攻略和AJAX初步运用

    总的来说,解决JSP乱码问题和正确使用AJAX传递中文参数,关键在于理解编码和解码的过程,以及在不同环境下的适应性调整。通过适当的过滤器配置、参数转换和统一的编码标准,可以有效地防止和解决这些问题。在实际...

    magicajax0.3.0解决中文乱码

    《解决magicajax0.3.0中的中文乱码问题》 在进行Web开发时,我们经常需要使用Ajax技术来实现页面的异步更新,而MagicAjax作为一款强大的Ajax库,为开发者提供了便捷的接口和丰富的功能。然而,在处理中文字符时,...

    jquery.ajax的url中传递中文乱码问题的解决方法

    本文介绍了如何解决jquery.ajax在url中传递中文导致的乱码问题。 首先,了解中文乱码产生的原因是非常关键的。在jquery.ajax请求中,默认的contentType是`application/x-www-form-urlencoded`。在这种情况下,如果...

    Ajax使用POST提交中文乱码问题.docx

    在使用Ajax进行POST提交时,中文字符可能会遇到乱码问题,这是因为数据在传输过程中编码与解码不匹配导致的。Ajax以UTF-8编码发送数据,但服务器端可能使用了不同的字符集(如GB2312)来解析,这就产生了乱码。本文...

    java文件JSP文件乱码汇总

    本文将深入探讨Java与JSP文件乱码的问题,提供一系列解决方案,确保数据正确无误地在不同平台和系统之间传递。 #### 一、统一字符集设置 **问题描述**:在项目开发中,由于Java默认使用UTF-8编码,但在实际操作中...

    AJAX中文乱码

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

Global site tag (gtag.js) - Google Analytics