一、方案一
MySQL使用过程中最大的问题可能就是乱码问题了,以前以为只要按如下方案就能解决中文乱码问题。
1.数据库在建立时设置utf8字符集,utf8_general_ci排序规则。保证每张表存储的数据都是utf8格式的。
2.Java连接数据库时,url后边加上?useUnicode=true&characterEncoding=utf-8,例如:url = " jdbc:mysql://localhost:3306/spring_db?useUnicode=true&characterEncoding=utf-8 ";
按照以前的理解,只要JSP以及HTML页面每个页面用UTF8编码,Servlet接收和传输值都用UTF8编码,跟数据库的编码对应就一定能解决中文乱码问题了。然而,昨天在向数据库插入繁体中文时出现了乱码,查找了很多资料,最终尝试解决的方案二。
二、方案二
首先,确保程序编码没问题,数据确实是以utf8编码传输的,数据库编码也是对应的utf8。cmd进入数据库,使用命令:mysql> show variables like 'character%';查询所有编码。
此图,是最终修改后的完全与程序对应的。修改方法为set names utf8,但此种方法只能当前有效,为了确保一劳永逸,可以修改MySQL安装目录下的my.ini配置文件,免安装办的MySQL此文件名字初始可能为my-default.ini,需修改为my.ini配置生效。
在配置文件中添加如下配置:
[client]
default-character-set=utf8
port=3306
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
character_set_filesystem=utf8
修改完后重启MySQL服务就可以了。本人在重启服务时因为my.ini配置文件有一个地方写错了,导致启动失败,错误提示如下:
本地计算机 上的mysql服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。
出现此错误一般在MySQL第一次安装配置后,配置不当引起的,并且在.err的log中没有任何提示。运行mysqld --initialize执行初始化,可以看到如下提示:
因为配置文件中的server_id项不识别,将my.ini中此项删除或注释掉,如下所示:
最后重启MySQL服务即可。
已经成功进入MySQL服务。