gpt4 book ai didi

mysql - 为什么我无法将某些字符插入 MySQL 表中?

转载 作者:行者123 更新时间:2023-11-29 10:53:20 24 4
gpt4 key购买 nike

我正在尝试执行 MySQL 插入,但收到如下错误消息:

Incorrect string value: '\xA0' for column 'foo' at row 1

\xA0\x96 都会发生这种情况。

我正在使用 PHP,并将此查询传递给 mysqli_query():

插入 ttest1 (foo) VALUES("test\xA0")

这是创建表:

CREATE TABLE ttest1 (    test_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,    foo VARCHAR(32))

这是 MySQL 的字符集和排序规则信息:

character_set_client        utf8mb4character_set_connection    utf8mb4character_set_database      utf8character_set_filesystem    binarycharacter_set_results       utf8mb4character_set_server        utf8character_set_system        utf8collation_connection        utf8mb4_unicode_cicollation_database          utf8_general_cicollation_server            utf8_general_ci

foo 列的排序规则为 uft8_general_ci。

那么为什么我在这个设置中遇到这个错误,最好的解决办法是什么?

最佳答案

\x80\xFF 之间没有有效的 utf8 编码,因此错误是正确的。

代码点 160 (0xA0)(也称为   ),采用 utf8,是一个 2 字节字符,编码为 0xC2 0xA0.

同样,代码点 150 (0x96) 被编码为 0xC2 0x96

使用有效的 utf8 对字符串进行编码是正确的解决方案。

我是一名 MySQL DBA,不是 PHP 专家(尽管我有铜牌 PHP 标签徽章),但显然 PHP 7 已引入 unicode codepoint escape literals所以你显然可以使用“\u{a0}”

关于mysql - 为什么我无法将某些字符插入 MySQL 表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43382479/

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