Python3 报错'latin-1' codec can't encode character 解决方案

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版本下

  1. 打开配置文件,我的配置文件是在 /etc/mysql/my.cnf
  2. 在[client]和[mysqld]字段下面均添加default-character-set=utf8,保存并关闭
  3. 重启mysql服务
  • mysql 5.5版本以上
  1. 打开配置文件,我的配置文件是在 /etc/mysql/my.cnf

  2. [mysqld]下添加:

    character-set-server=utf8

    collation-server=utf8_general_ci

  3. 重启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

https://blog.csdn.net/u010663668/article/details/54881998

https://blog.csdn.net/shuifa2008/article/details/9254389

猜你喜欢

转载自www.cnblogs.com/shitou6/p/8990162.html