乱码问题表现:
- 在“终端”中使用命令行对MySQL数据库中的数据进行操作时,可能无法插入非英文字符(例如,中文)
- 使用应用程序(例如,php或java程序)对MySQL数据库中的数据进行操作时,插入的非英文字符,查询出来后,可能是乱码
使用“终端”程序连接到MySQL后,使用 show variables like ‘%character%’; 查看字符集的设置情况。
出现下面内容,其中,character_set_server的值为latin1,需要将其设置为utf8。
在/usr/local/mysql/目录下,有一个my.cnf文件,该文件是从模板文件得来的,这里的模板文件,就是/usr/local/mysql/support-files目录下的my-default.cnf文件。更多信息,可以参考http://dev.mysql.com/doc/refman/5.6/en/server-default-configuration-file.html。关于相关变量的信息,可以参考http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html
所做的修改,就是在my.cnf文件中进行的。
1、关闭mysql服务,可以在“系统偏好设置”->“MySQL”面板中进行,也可以使用以下命令进行开启、关闭、重启
Shell
1
2
3
|
sudo /usr/local/mysql/support-files/mysql .server start sudo /usr/local/mysql/support-files/mysql .server stop sudo /usr/local/mysql/support-files/mysql .server restart |
2、修改my.cnf文件的读写权限,可以设置为777,只要当前用户可以对其进行写入就行。
在[mysqld]下面添加character-set-server = utf8
然后,保存,并将读写权限恢复到原来的状态(也就是755),这里之所以要恢复读写权限,是因为会出现警告:Warning: World-writable config file ‘/usr/local/mysql/my.cnf’ is ignored,该警告会导致所做的修改不会有效。
3、重新开启mysql服务
4、删除已经是乱码的数据,将数据重新插入。此时,再进行查询,出来的就不是乱码了。