javaweb的乱码总结
乱码的排查
数据库的数据到web表现层所经过的路径,来检查其字符集
1创建数据库时
把数据库的属性设置正确的字符集
2tomcat服务器字符集
我们在程序编写的过程中总是会遇到一些中文编码的问题,需要在程序中很多环节中去进行过滤和转义,依旧有可能遇到中文乱码的问题,当然是针对于tomcat服务器来说的。
在服务器/conf目录/server.xml文件
将相关语句改为:
<Connector port="8008" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
之前的语句没有URIEncoding="UTF-8"这一句
3连接数据库时
连接数据库的字符集
c3p0连接池的一个例子:
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl"> jdbc:mysql://localhost:3306/tt?characterEncoding=UTF-8</property>
<property name="user">root</property>
<property name="password">123</property>
</default-config>
</c3p0-config>
在?characterEncoding=UTF-8
4客户端请求服务器响应时
客户端即浏览器在请求时,就是servlet在处理浏览器的request时
服务器响应,就是servlet返回给表现层response时
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
// TODO Auto-generated method stub
doGet(request, response);
}
设置request和response的字符集
- request.setCharacterEncoding(“UTF-8”);
- response.setCharacterEncoding(“UTF-8”);
这样就大概保证了,数据从数据库到表现层,或者表现层到数据库的字符集都是utf-8了。