Python3 报错'latin-1' codec can't encode character 解决方案
在更新数据库操作时,报错:
UnicodeEncodeError: 'latin-1' codec can't encode character 'uff08' in position 21: ordinal not in range(256)
在百度后得到三种解决方法,其中个人认为第三种最方便。
1. 处理字符串
代码省略
2. 设置数据库编码
一种方法是在连接数据库时设置
db.set_charset('utf-8')
cursor.execute('SET NAMES utf8;')
cursor.execute('SET CHARACTER SET utf8;')
cursor.execute('SET character_set_connection=utf8;')
然而我在用了这种方法后是没有用的。
另外一种设置数据库编码的方式是更改配置文件。
-
可以通过
db.set_charset('utf-8')
查询数据库编码 -
windows更改数据库编码
1、在mysql的安装目录下找到my.ini文件(如果没有的话就把my-medium.ini复制,然后重命名为my.ini即可)在mysql5.7中是my-default文件。
2、在my.ini文件中找到[client]和[mysqld]字段,在下面均加上default-character-set=utf8,保存并关闭
3、重启mysql服务
-
Linux更改数据库编码
- mysql 5.5版本下
- 打开配置文件,我的配置文件是在 /etc/mysql/my.cnf
- 在[client]和[mysqld]字段下面均添加default-character-set=utf8,保存并关闭
- 重启mysql服务
- mysql 5.5版本以上
-
打开配置文件,我的配置文件是在 /etc/mysql/my.cnf
-
[mysqld]下添加:
character-set-server=utf8
collation-server=utf8_general_ci
-
重启mysql服务
-
设置成功后的编码
3.在连接数据库时设置参数
db = pymysql.connect("localhost","root","00000000","TESTDB" ,use_unicode=True, charset="utf8")
设置use_unicode 和charset参数
参考博客:
https://blog.csdn.net/wanglingxxx/article/details/52049278