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

