插入匈牙利语文本字符时出错

Error when inserting Hungarian text characters

我正在尝试通过 SQL 查询插入此文本

INSERT INTO `tbl_instructions` (`No`, `Language`, `Text`) VALUES
('Introduction','HU','Kérdőív - ""Ismerd meg Önmagad!""  Ahogy az ókori görögök mondták: ""Ismerd meg Önmagad!"" - Ez a célja ennek a személyiségtesztnek is. Ez a teszt egy negyedórás szemtől szembeni beszélgetésnek felel meg.  A teszt kitöltése nagyjából fél órát igényel. Közben megszakíthatja az internetkapcsolatot, elég a teszt elküldéséhez visszaállítania azt.  Jó szórakozást kívánunk a teszthez, természetesen az adatait bizalmasan kezeljük és nem osztjuk meg senkivel. Ezt garantálja  Andreas és Telse Gross');

我得到:

#1366 - Incorrect string value: '\xC5\x91\xC3\xADv ...' for column my_database.tbl_instructions.Text at row 1

我尝试了 utf8_unicode_ciUTf8mb4_unicode_ci,但我仍然遇到同样的错误。

这可能是目标 table 中 Text 列的排序规则问题。

考虑以下内容,它使用 Text 列,该列使用 latin1_general_ci 排序规则创建:

CREATE TEMPORARY TABLE `tbl_instructions` (`Text` VARCHAR(1000) COLLATE latin1_general_ci);

INSERT INTO `tbl_instructions` (`Text`) VALUES ('Kérdőív - ""Ismerd meg Önmagad!""  Ahogy az ókori görögök mondták: ""Ismerd meg Önmagad!"" - Ez a célja ennek a személyiségtesztnek is. Ez a teszt egy negyedórás szemtől szembeni beszélgetésnek felel meg.  A teszt kitöltése nagyjából fél órát igényel. Közben megszakíthatja az internetkapcsolatot, elég a teszt elküldéséhez visszaállítania azt.  Jó szórakozást kívánunk a teszthez, természetesen az adatait bizalmasan kezeljük és nem osztjuk meg senkivel. Ezt garantálja  Andreas és Telse Gross');

这会产生以下错误:

Error Code: 1366. Incorrect string value: '\xC5\x91\xC3\xADv ...' for column 'Text' at row 1

现在考虑以下使用 utf8mb4_0900_ai_ci:

CREATE TEMPORARY TABLE `tbl_instructions` (`Text` VARCHAR(1000) COLLATE utf8mb4_0900_ai_ci);

INSERT INTO `tbl_instructions` (`Text`) VALUES ('Kérdőív - ""Ismerd meg Önmagad!""  Ahogy az ókori görögök mondták: ""Ismerd meg Önmagad!"" - Ez a célja ennek a személyiségtesztnek is. Ez a teszt egy negyedórás szemtől szembeni beszélgetésnek felel meg.  A teszt kitöltése nagyjából fél órát igényel. Közben megszakíthatja az internetkapcsolatot, elég a teszt elküldéséhez visszaállítania azt.  Jó szórakozást kívánunk a teszthez, természetesen az adatait bizalmasan kezeljük és nem osztjuk meg senkivel. Ezt garantálja  Andreas és Telse Gross');

运行成功。

仅在 INSERT 上指定排序规则不够好 - 如果目标列是不兼容的排序规则,那么您将收到您所看到的错误消息。

应该将 table 修改为正确的排序规则 - 我并不是建议它应该是 utf8mb4_0900_ai_ci。使用适合您需要的排序规则(例如,latin2_general_ci 也适用于您的字符集)。

在 OP 将 RDBMS 改为 MariaDB 而不是 MySQL

后更新

根据您关于使用 MariaDB 而不是 MySQL 的评论,您可以使用 MariaDB 10.2 中提供的 utf8mb4_general_ci

这是 MariaDB 10.3 的 working fiddle,显示它使用该排序规则工作。