使用servlet的配置和使用框架的设置
在使用servlet开发时,我们使用request设置编码格式,一般在过滤器中设置。也就是设置发送的格式和每次接受的数据都设置编码个是为utf-8.
request.setCharacterEncording("utf-8");
response.setContentType("text/html;charset=utf-8");
在web.xml中配置过滤器,用来解决中文代码问题
<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>
</filter>
<filter-mapping>
<filter-name>characterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这样解决的是普通的乱码问题,当你前端返回的有json字符串,处理请求返回的json字符串的乱码在springmvc-servlet.xml中配置以下代码,由于浏览器版本不同,配置信息放的位置也不尽相同。低版本浏览器放在开启注解扫描和定义扫描的包之间。高版本放在任意位置都可以解决。
<!--开启注解扫描功能-->
<mvc:annotation-driven></mvc:annotation-driven>
<!-- 处理请求返回json字符串的乱码问题 -->
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
<!--定义扫描的包-->
<context:component-scan base-package="com.qy.controller"></context:component-scan>
如果这样还解决不了,就在上面的配置的文件中加入fast-Json配置
<!-- 处理请求返回json字符串的中文乱码问题 -->
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<!-- 解决Controller返回json中文乱码问题 -->
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<!-- <property name="supportedMediaTypes" value="text/html;charset=UTF-8" /> -->
<!-- <property name="supportedMediaTypes" value="application/json;charset=UTF-8" > -->
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
<!--新加入的配置-->
<!-- fastJson配置 -->
<bean id="fastJsonHttpMessageConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/json;charset=UTF-8</value>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
总结
经过这样的一番操作,一般都可以解决使用springmvc中文乱码问题。