关于编码大致有以下几个地方需要注意
1.数据库的编码
mysql在创建数据库的时候指定编码
CREATE DATABASE ms_db CHARACTER SET utf8 COLLATE utf8_general_ci;
oracle在安装的时候一般是创建好字符集的,这里不做过多的介绍。
2.项目工程的编码
项目的编码在eclipse右击项目选择Propreties选择编码
3.项目连接数据库的连接的编码
jdbc.url=jdbc:mysql://localhost:3306/drink?useUnicode=true&characterEncoding=utf-8
这里是最容易忽视的一个地方,特别注意。
4.项目中获取参数与返回参数的编码
获取参数有两种情况:
get方式:在后台获取参数后转码
String string = new String(message.getBytes(“iso-8859-1”),”utf-8”);
修改tomcat配置文件
修改conf下的
server.xml中配置 Connector的URIEconding=”UTF-8”属性即可。(注意位置)
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
在web.xml里设置过滤器
<filter>
<filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
返回参数的编码设置:(springmvc为例)
注解方式:
@RequestMapping(value=”/respost”,method=RequestMethod.GET,produces=”text/html;charset=UTF-8”)
设置方式:
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
<bean
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json; charset=UTF-8</value>
<value>application/x-www-form-urlencoded; charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
总结:出现乱码有很多种情况,一个一个耐心排查一定会找出来的。