不正确的字符串值:第 1 行“description”列的“\xE2\x80\xAF(fo...”错误:INSERT INTO my_table_name

问题描述 投票:0回答:2

有时,当文本从第三个网站复制粘贴到我的基于表单的应用程序(在文本区域中)时,数据不会插入到数据库中,而是抛出以下错误。

第 1 行的“my_column_name”列的字符串值不正确:“\xE2\x80\xAF(fo...”) 错误:INSERT INTO my_table_name

我在 mysql workbench 中尝试了以下查询来解决这个问题。

ALTER TABLE my_database_name.my_table CONVERT TO CHARACTER SET utf8

但是我从数据库中收到以下错误。

错误代码:1118。行大小太大。所使用的表类型的最大行大小(不包括 BLOB)为 65535。这包括存储开销,请查看手册。您必须将某些列更改为 TEXT 或 BLOB

mysql character-encoding
2个回答
0
投票

您的列数据类型接受的最大限制为 65535 字节。您需要将列数据类型更改为

text
BLOB

从网站或Word文档复制内容时,只需粘贴到任何纯文本编辑器中并检查是否复制了预期内容

您可以在编程中使用

$content= preg_replace('/[\xE2\x80\xAF]/', '', $content);
。上面的例子是 PHP 的


0
投票

请勿在名称中使用空格:十六进制

E280AF
是 UTF-8,用于“狭窄的无分隔空间”。

我担心在没有首先诊断问题的情况下做

ALTER TABLE my_database_name.my_table CONVERT TO CHARACTER SET utf8
只会让事情变得更糟。

您之前可能使用过 latin1?数据库中还有其他非英语文本吗?他们可能(或可能不会)搞砸了。

我们也许能够解决这个问题,但我们需要了解有关您最初拥有的内容以及导致此问题的步骤的更多详细信息。

此外,您希望您的客户使用什么语言?

© www.soinside.com 2019 - 2024. All rights reserved.