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传递中文参数需要做的事情了。

  • 相关阅读:
    海尔大数据精准营销平台(内部资料)
    马化腾做的PPT:产品设计与用户体验
    网站上线后,第一次完成线上线下整个环节
    灵感不断
    redis命令
    Redis持久化实践及灾难恢复模拟
    [转]创业公司常见的25个法律问题
    用python语言编写网络爬虫
    Python3常用网络编程模块介绍
    Python3数据库模块(sqlite3,SQLite3)
  • 原文地址:https://www.cnblogs.com/justbeginning/p/3362855.html
Copyright © 2011-2022 走看看