在JSP-->Servlet-->DAO-->MySQL设计的过程中,中文乱码的问题时常出现。最常出问题的地方在MySQL中。其次还有网页编码的问题,request请求解析的编码问题。
- MySQL
MySQL默认的编码格式为latin1,而不是常用的utf8,查看MySQL的编码格式只需执行
show variables like '%char%'
。
可以看到database和server默认的编码为latin1。如果想永久的更改编码为utf8,则需要更改MySQL的配置文件/etc/my.cnf
。
MySQL默认设置
在linux系统中
/etc/my.cnf
文件默认不存在,但my.cnf存在于/etc/mysql/my.cnf
cd /etc/mysql
sudo vim my.cnf
//添加
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
保存文件后,
cp my.cnf /etc
,复制到etc目录下,重启mysql:service mysql restart
重新进入mysql,show variables like %char%
,会发现编码已经全都变为utf8。(此编码只对以后创建的数据库有用,更改之前的数据库的编码未变)
更改格式之后
- JSP页面设置
JSP页面中使用page命令设置网页的编码格式为utf8:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
3.Request请求
我们在使用request.getParameter()方法获取属性时,request默认使用的是"ISO-8859-1"编码,为了统一编码,应在request.getParameter()方法之前设置使用utf8来解析:
request.setCharacterEncoding("UTF-8");
网友评论