最近,在Ubuntu下使用MySQL存储爬虫数据时,遇到一些问题,现做一个总结,将使用过程中踩过的坑慢慢记录下来。运行环境:Ubuntu 17.10
MySQL版本: 5.7.20
一.写入中文数据时报编码错误
MySQL的默认编码是Latin1,不支持中文,要支持中文需要把数据库的默认编码修改为gbk或者utf8。下面是更改默认编码的方法:
1.以root用户身份登陆MySQL,查看编码方式:
(以root用户身份登陆的命令为:>mysql -u root –p,输入登陆秘密,然后输入"show variables like 'character%';"即可查看编码信息 )查看默认编码方式character_set_client为客户端编码方式;
character_set_connection为建立连接使用的编码;
character_set_database数据库的编码;
character_set_results结果集的编码;
character_set_server数据库服务器的编码;
由上图可见database和server的字符集使用了latin1编码方式,不支持中文,即存储中文时会出现乱码。
2.修改相关文件
linux系统下,修改MySQL数据库默认编码的步骤为:修改/etc/mysql/mysql.conf.d/mysqld.cnf 文件
xhost + #如果xhost +不能执行,报错:xhost : unable to open display “”
sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf在 [mysqld ] 下面加入
#我这里更改为utf8mb4是因为存储emoji表情报错。
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'修改mysql.cnf文件
sudo gedit /etc/mysql/conf.d/mysql.cnf在[mysql]下方加入
default-character-set = utf8mb4
3.重启mysql
mysql service restart
4.查看更改后的编码方式
好了,设置完毕,可以愉快的存储数据了,还能保存emoji表情。