gpt4 book ai didi

python - MySQL 和 Python 中 3 字节字符的字符串值不正确

转载 作者:行者123 更新时间:2023-11-29 10:40:54 26 4
gpt4 key购买 nike

在开始之前,我知道这个问题被广泛询问,但我已经查看了几乎所有适合与此问题相关的各种搜索词的问题。

我的问题是我试图在 utf8 中存储 3 字节字符,而不是许多问题所询问的 4 字节,特别是中文字符。

数据库字符集是 utf8,具有 utf8_general_ci 排序规则。列、表和连接字符集也是 utf8。

MySQLdb.connect(host, user, passwd, schema, charset ='utf8', use_unicode=True)

我知道 use_unicode 是隐含的,但我喜欢它的冗长。

我收到的警告是:警告:第 1 行“mycolumn”列的字符串值不正确:“\xE5\x9B\xBD”

这会导致该字段的 SELECTS,从而产生 ?。我的终端支持utf8,并且我的系统编码是utf8。

任何想法都会有所帮助。对此值调用 .decode('utf8') 也无法解决问题。

最佳答案

事实证明,这最终是存储过程的问题。来自 MYSQL 文档。

If CHARACTER SET and COLLATE attributes are not present, the database character set and collation in effect at routine creation time are used. To avoid having the server use the database character set and collation, provide explicit CHARACTER SET and COLLATE attributes for character data parameters.

连接和客户端编码为 UTF8,但数据库仍保留为 latin1。这会导致问题,因为存储过程是在数据库编码为 latin1 时创建的。

TLDR;将 CHARSET utf8 添加到存储过程参数。

关于python - MySQL 和 Python 中 3 字节字符的字符串值不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45510367/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com