插入匈牙利语文本字符时出错
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_ci
和 UTf8mb4_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,显示它使用该排序规则工作。
我正在尝试通过 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_ci
和 UTf8mb4_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,显示它使用该排序规则工作。