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

原文地址:https://www.cnblogs.com/shitou6/p/8990162.html