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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM