zoukankan      html  css  js  c++  java
  • 通过URL传递中文参数的乱码处理

    环境:
    web.xml中配置了

    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>
            org.springframework.web.filter.CharacterEncodingFilter
        </filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>

    通过url传递参数时,可能不会通过web.xml的过滤器将编码转换为UTF-8格式,所以在没进行后台编码转换时,直接获取到的参数值中文部分是乱码。

    然后在后台代码中对参数(param)进行了编码转换

    URLDecoder.decode(new String(param.getBytes("ISO8859-1"),"UTF-8"),"UTF-8");

    通过这个方式获取的参数值(中文1个其他为数字参数)乱码变成两个?( 问号)。

    经过搜索资料。。测试。。最后通过在URL传参前,对参数进行编码后再传才解决了这个问题。同时以上的编码解码操作仍然是必须的。

    url = "<%=path%>/test/test.do?test="+encodeURI(param);
    window.open(url);

    通过这个方式终于解决了中文参数通过URL传递的问题。

    总结需要特殊处理的地方:

    1.传递参数前用encodeURI()进行编码

    2.接收后使用URLDecoder.decode(new String(param.getBytes("ISO8859-1"),"UTF-8"),"UTF-8"); 来解码获得对应参数

    这应该是在UTF-8项目环境下通过URL传递中文参数需要做的事情了。

  • 相关阅读:
    附加数据库 对于 服务器“00-PC”失败
    SQL 语句转换格式函数Cast、Convert
    sql语句:union
    ISNULL-sqlserver语句
    SQL中的CASE WHEN语句
    SQL SELECT INTO 语句
    Sql语句中IN等方面的用法
    combobox的不常用的方法和将txt文本内容加到textbox中显示
    程序员:“菜鸟”和“大神”差距在哪
    过劳死离我们有多远?
  • 原文地址:https://www.cnblogs.com/justbeginning/p/3362855.html
Copyright © 2011-2022 走看看