• Spring MVC Controller中解析GET方式的中文参数会乱码的问题(tomcat如何解码)


    Spring MVC Controller中解析GET方式的中文参数会乱码的问题

    问题描述

    在工作上使用突然出现从get获取中文参数乱码(新装机器,tomcat重新下载和配置),查了半天终于找到解决办法。

    为何会乱码

    Spring MVC 是基于Servlet,在Http请求到达Servlet解析之前,GET过来的URL已经被Tomcat先做了一次URLDecode。Tomcat对GET方式默认的URL解码结果是iso-8859-1而不是我认为的UTF-8。

    解决方案

    解决方案也很简单,除了平常在项目中web.xml里配置的转码filter,jsp跟代码文件统一编码外,最关键的一点就是在Tomcat的conf目录下的server.xml中配置 Connector的URIEconding=“UTF-8"属性即可。 
    官方文档中对这个属性的说明:

    URIEncoding :This specifies the character encoding used to decode the URI bytes, after %xx decoding the URL. If not specified, ISO-8859-1 will be used.

    这里参考文档是Tomcat5.5的,亲测对Tomcat7也管用。

    NOTE:

    <Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" useBodyEncodingForURI="true" />

    通过 useBodyEncodingForURI="true" 这种配置, 然后在代码中设置默认的 Request.setCharacterEncoding 编码,就能有效解决乱码问题。

    ,推荐用 useBodyEncodingForURI="true"

  • 相关阅读:
    [CQOI2016]手机号码
    花神的数论题
    [AHOI2009]同类分布
    lightoj 1007
    PAT (Advanced Level) 1007. Maximum Subsequence Sum (25) 经典题
    PAT (Top Level)1002. Business DP/背包
    PAT (Advanced level) 1003. Emergency (25) Dijkstra
    HDU 1874 SPFA/Dijkstra/Floyd
    POJ 2823 Sliding Window ST RMQ
    HUST 1103 校赛 邻接表-拓扑排序
  • 原文地址:https://www.cnblogs.com/sidesky/p/4422218.html
Copyright © 2020-2023  润新知