中文乱码这个问题已经是老生常谈,这里只做记录,以便之后的开发中快速解决。
一,解决思路
1.从网页读中文保存到str
手动:str = new String(str.getBytes("ISO-8859-1"),"UTF-8");
过滤器:
- 在web.xml中 添加一个过滤器
- 在过滤器类中添加以上代码
如果是SSM框架 直接在web.xml中注册已经写好的过滤器指定编码即可
2.保存中文到数据库
不管是用jdbc还是mybatis或者durid都差不多,指定url的时候在后面加上useUnicode=true&characterEncoding=UTF-8
<property name="url" value="jdbc:mysql://localhost:3306/mall?useUnicode=true&characterEncoding=UTF-8" />
3.除此之外 还要注意
- 网页的编码 比如html jsp的编码
- 数据库的编码 值得注意的是MySQl中不仅数据库有编码 表和字段也有编码
二,MySQL 编码配置
进入MySQL 输入如下命令查看编码,我们最终希望的下面这种全是utf8的结果
做法就是去修改MySQL的配置文件, my.ini 位置在安装目录下,修改文件需要管理员权限。
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
default-storage-engine=INNODB
检查这些标签下的编码,不是utf8的改成utf8,没有的自己加上。
- 这些标签下都有很多注释,要仔细找
- 修改完毕后重启mysql才能生效, net stop mysql + net start mysql 或者 net restart mysql