utf8_client_read_mysql_table_code_in_latin1

utf8客戶端讀取_latin1編碼的mysql表

轉載註明來源: 本文連接 來自osnosn的博客,寫於 2020-09-06.html

如下提到的編碼問題,mysql 和 mariadb 是同樣的解決辦法。

背景環境

  • 早期建立的mysql table 表缺省編碼 default charset=latin1
  • 表中寫入的中文是 gbk 編碼的。
  • mysql 中 查看錶的缺省編碼 show create table tb_name
    最後一行 DEFAULT CHARSET= 就是表的編碼格式。

mysql client

  • 由於終端是 utf8 的,用 mysql 命令鏈接數據庫後,查詢結果,中文是亂碼。
    • 解決辦法,先執行 set names latin1 便可。

python/MySQLdb, python3/mysqlclient

  • 鏈接數據庫指定參數 charset, use_unicode
    • db=MySQLdb.connect(host='localhost', ... ,charset='latin1',use_unicode=False)
      查詢返回的值,全是 bytes 類型的。只需 加上 result.decode('utf8') 中文就能正常顯示了。
  • use_unicode=True , 返回的是 str 類型
  • use_unicode=False , 返回的是 bytes 類型

轉載註明來源: 本文連接 來自osnosn的博客.python

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息