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

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息