减压图片
彻底解决乱码
1.1 @ResponseBody 注解乱码
这种乱码是由于JSON字符串和对象进行序列号和反序列化的时候用出现的问题,String转换的时候默认用的编码是ISO-8859-1。
解决办法1: 在 @requestMapping 请求映射的注解中属性 produces="text/html;charset=UTF-8"
解决办法2: 一劳永逸的办法 在spring配置中配置下
<mvc:annotation-driven >
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes" value="text/html;charset=UTF-8"/>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
解决办法3: 如果还不能解决GET出现的乱码,就在JSP页面添加配置:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
1.2 数据库乱码
创建数据库的时候,一般都会选择 UTF-8的字符编码方式来创建数据库。一般不会出现来乱码问题,但是在配置 jdbc的时候,不注意没有添加上配置,也可能出现乱码:
jdbc.url= jdbc:mysql://localhost:3306/testdb?characterencoding=UTF-8
1.3 control 层编码格式问题
如果使用:request.setCharacterEncoding("UTF-8");
响应也使用:response.setContentType("application/json;charset=UTF-8");
1.4 IDE默认编码问题
IDEA默认时UTF-8,eclipse则是GBK
eclipse需要配置下IDE默认编码: General->Workspace->Text file encoding
1.5 tomcat 出现乱码情况
tomcat 一般会先乱码情况,但是tomcat也可以配置,可以预防这种乱码的可能性。 在conf -> server.xml 中进行配置
<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" /> -
1.6 tomcat 如还继续出现乱码,继续处理
这次在启动脚本中添加 utf-8编码方案,来彻底解决乱码问题
windows catalina.bat:
set JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG% -Dfile.encoding="UTF-8"
linux catalina.sh:
JAVA_OPTS="-Dfile.encoding=UTF-8"
,