当前位置: 首页 > 知识库问答 >
问题:

为什么我不能在MySQL表中插入某些字符?

陈胤
2023-03-14

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

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

插入ttest1(foo)值(“test\xa0”)

下面是create表:

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

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

character_set_client        utf8mb4
character_set_connection    utf8mb4
character_set_database      utf8
character_set_filesystem    binary
character_set_results       utf8mb4
character_set_server        utf8
character_set_system        utf8

collation_connection        utf8mb4_unicode_ci
collation_database          utf8_general_ci
collation_server            utf8_general_ci

共有1个答案

公宜春
2023-03-14

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

代码点160(0xA0)(也称为 ; )在utf8中是一个2字节字符,编码为0xC20xA0

类似地,代码点150(0x96)被编码为0xC20x96

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

我是一个MySQL DBA,不是PHP专家(尽管有我的青铜PHP标记徽章),但显然PHP7引入了unicode代码点转义文字,因此您显然可以使用“\u{a0}”

 类似资料:
  • 问题内容: 我正在尝试编写一个超级简单的文件来在Go项目中运行测试。项目的依赖项已供应,但我想跳过这些测试。从命令行运行时,我只是做 但是,当我把它变成这样的时候: 该表达式将不被评估: 我如何获得make以类似shell的方式插值表达式的方法? 问题答案: 在Makefile配方部分中,您将需要使用escape 使用第二个:

  • 我试图导入PyAudio,但它总是给我一个错误。如果我的电脑有问题,我使用的是Windows64x和Python3.9.4。以下是错误:

  • 问题内容: 对于什么可以/不能用作python dict的键,我有些困惑。 因此,元组是不可变的类型,但是如果我在其中隐藏一个列表,那么它就不能成为键。.我不能像在模块内部一样轻松地隐藏一个列表吗? 我有一个模糊的想法,认为密钥必须是“可哈希的”,但是我只是承认自己对技术细节的无知。我不知道这里到底发生了什么。如果您尝试使用列表作为键,而将哈希作为其存储位置,那会出什么问题呢? 问题答案: Pyt

  • 问题内容: 看一下这个文件: 它不编译;我需要。现在考虑这一点: 完全一样,只是用代替,所以不应该编译,对吧?错误。 好的,所以不必导入是众所周知的,但是 为什么 呢?“明显”的答案是因为它的使用频率远高于,但是不应该“隐式导入”吗?原始包装器类,例如和呢?用 远远 往往比和,但我必须进口,并不需要进口。 什么是落后不需要对进口的原因,,,和其他几个班? 问题答案: 明显的答案是因为它的使用频率远

  • 问题内容: 为什么 工作,但是 不是吗 问题答案: 为了理解这一点,让我们考虑一下编译器在两种可能性下每个步骤所做的事情。让我们开始: 编译器将‘4’转换为int。所以变成 然后编译器变成 ch是一个字符,编译器可以将54转换为字符,因为它可以证明转换没有损失。 现在让我们考虑第二个版本: ch在编译时没有已知值。因此,这成为 现在,编译器无法证明此(int)的结果在char范围内可存储。因此它