介绍
介绍
福哥在使用pymysql查询数据的时候发现了一个奇怪的问题,就是MySQL数据库里面明明存储的是正常的中文,但是通过pymysql查出来之后就会报出如下错误:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb8 in position 2: invalid start byte
这是怎么回事??
原因
原来是MySQL包括两个编码参数,一个是连接编码参数,一个是执行编码参数。连接编码就是你的连接的MySQL服务器的系统编码,可以通过“show variables like '%charset%'”查看。而执行编码就是你的数据库的编码,这个你自己应该知道。(什么?不知道?问你经理,或者...你要黑谁的服务器...)
如果这两个没有安装实际的情况写的话,就有可能在读数据的时候触发UnicodeDecodeError的错误了。
解决
系统编码
查询character_set_system的值,就是系统编码了。
数据库编码
查看创建数据库的sql语句,这里面有数据库的编码。
示例
这是福哥写的一个示例代码,大家可以参考啊~~