spring MVC中文乱码相关总结

总结几种方式,都使用的话能解决大多数乱码的情况

1.所有页面使用

<%@page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> 

  

2.服务器添加过滤器

<!-- 编码过滤器 -->

  <filter>

        <filter-name>characterEncoding</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>

    <filter-mapping>

        <filter-name>characterEncoding</filter-name>

        <url-pattern>*.action</url-pattern>

    </filter-mapping>

这是为了解决post表单中的中文能顺利提交到后台

3.GET请求中文乱码,修改tomcat中的server.xml配置文件

tomacat对GET和POST请求处理方式是不同的,要处理针对GET请求的编码问题,则需要改tomcat的server.xml配置文件,如下:

spring MVC中文乱码相关总结

把这个

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

修改成

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

或者

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" uRIEncoding="utf-8"/>

 

最关键的点在这里:如果你是更改的tomcat安装目录的server.xml配置文件,那么在用eclipse运行项目时会发现配置没起作用,其实是因为eclipse在运行项目时是用的eclipse中配置的tomcat,那么问题就好解决了,打开eclipse中的tomcat配置文件。

更多的可以参考 http://blog.csdn.net/xuechongyang/article/details/8283924

 

以下是个人备注,未测试

对于AJAX中文传参可以这样

get

js端

var url = 'policy.do?word=encodeURI(encodeURI(‘商品'))'

var url = 'policy.do?word=escape(‘商品')'

 

服务器端

String word = request.getParameter("word"); 

word = java.net.URLDecoder.decode(word,"UTF-8");  

 post

request.setCharacterEncoding("UTF-8"); 
String name = request.getParameter("name"); 

你可能感兴趣的:(spring mvc)