gpt4 book ai didi

mysql - 使用Python检测该字符串是否会导致MySQL中出现 "Incorrect string value"错误

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

我在 MySQL (5.7) 数据库中有一个表,其排序规则 utf8_unicode_ci,以及我使用 Python (3.6) 插入一些数据的位置。

对于某些字符串(例如,'\xCE\xA6'),我收到“字符串值不正确”错误。在数据库方面,我可以通过关闭 MySQL 中的严格模式或将字段的排序规则更改为 utf8mb4 来消除此错误。

但是,此类字符串是“异常”,并且不希望更改排序规则或 sql_mode。

在插入表之前,如何在 Python 3 中检测到给定的字符串将导致 MySQL 出现“不正确的字符串值”错误?

最佳答案

从哪里得到错误消息?正在执行什么操作?

C3A6æ 的 UTF-8(参见 MySQL 的 utf8 或 utf8mb4)十六进制;这似乎就是想要的角色吗?

要处理 utf8(或 utf8mb4),您需要确定客户端的编码。听起来像 UTF-8。因此,当连接到 MySQL 时,告诉它 -- 在 connect 调用中使用这些:

charset="utf8", use_unicode=True

如果该字符在python源码中,则需要

# -*- coding: utf-8 -*-

在源代码的开头。

此外,您要插入的列必须是字符集utf8(或utf8mb4)。

Emoji和部分中文需要

utf8mb4;否则它“等同于”utf8

不要使用decode()或任何其他转换函数;这只会让事情变得更难解决。在这个舞台上,两个错误并不能构成一个正确;这会让事情变得更糟。

如果您还有其他乱码症状,请参阅Trouble with UTF-8 characters; what I see is not what I stored

要进一步讨论,请提供连接调用、涉及的 SQL 语句、SHOW CREATE TABLE 以及涉及的其他任何内容。

C3A6 是一个有效的 utf8/utf8mb4 字符 æ,并且可以被解释为有效的 latin1 ê,尽管不太可能。但对于CHARACTER SET ascii无效。 (我不知道错误消息是如何发生的,除非连接说的是 ascii 或一些晦涩的字符集。)

关于mysql - 使用Python检测该字符串是否会导致MySQL中出现 "Incorrect string value"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50667041/

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