项目配置:springmvc3+mybatis+spring3+struts2的一个项目. springmvc是后来加的.9号时出现返回json乱码问题,当时百度,做了一下措施
-
1 在tomcat的server.xml里Connector元素里添加了这么一行,URIEncoding='utf-8'
-
2 在web.xml里配置了springmvc编码拦截器
<!--设置spring的字符集-->
<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>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/appApi/*</url-pattern>
</filter-mapping>
将其配置为url拦截--/appApi/*;
- 3 刚我用maven打包是,发现提示maven使用默认的jdk来打包,但我的项目是utf-8编码,所以我百度了下,设置了maven打包的字符集
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
这里引入了一个maven编译的插件,规定了maven打包默认的jdk版本和编码格式.
这样,tomcat输出的json中的汉字就没有乱码了
##到底是那个原因呢
- 去掉了措施3,输出的还有乱码
- 加上措施3,去掉措施2,验证输出json没有乱码
- 去掉措施1,2;验证返回json无乱码;
得出结论,乱码是文件自身产生的,源于maven打包的编码是gdk,与项目的utf-8冲突.统一字符集就可以了.