错误 1366 (22007): 不正确的字符串值: 'x92t'


Server version: 10.8.3-MariaDB
Server charset: UTF-8 Unicode (utf8mb4)
InnoDB

我得到一个错误试图导入到一个空白的数据库(db已经创建,只是试图导入现在):

ERROR 1366 (22007) at line 19669:列glen_wazzup的不正确字符串值:'x92t'。nuke_bbsearch_wordlistword_text在第1行

SQL:

CREATE TABLE `nuke_bbsearch_wordlist` (
`word_text` varchar(50) binary NOT NULL default '',
`word_id` mediumint(8) unsigned NOT NULL auto_increment,
`word_common` tinyint(1) unsigned NOT NULL default '0',
PRIMARY KEY  (`word_text`),
KEY `word_id` (`word_id`)
) ENGINE=InnoDB AUTO_INCREMENT=18719 ;

19669行(错误行):

INSERT INTO `nuke_bbsearch_wordlist` VALUES (0x6469646e9274, 6895, 0);

从我的阅读来看,它与字符编码有关,字符是一个撇号,并且电线在某处交叉。我读过你可以使用ALTER语句,但这是一个原始的sql导入文件,还不能被导入,所以我不确定如何(或确切的"什么")改变文件,使它导入?

didn’t——注意,撇号不是ascii字符,如果用latin1编码(和几个字符集),而是十六进制92,如果用utf8或utf8mb4编码,则是E28099。

另一方面,您声明了"服务器字符集:UTF-8 Unicode (utf8mb4)",但是x92在UTF-8

中无效您正在尝试导入?如何?从什么?从,mysqldump ?从CSV文件?你有一个INSERT语句;那是从垃圾场来的吗?

在任何情况下,声明文件为"字符集latin1"可能是正确的。

排序不重要。

解决方案可能与将导入源文件从ISO-8859-1转换为UTF-8编码一样简单。

要在Linux上进行转换,您可以运行recode l1..u8 <filename >filename.out(如果已安装)或iconv -f ISO-8859-1 -t UTF-8 -o filename.out filename。然后将filename.out导入MySQL。

然而,源编码可能不同于iso - 8859 - 1(例如,它可能是iso - 8859 - 2),所以你可能想尝试多个源编码,并检查输出文件是正确的(例如,通过观察非ascii字符filename.out)。

最新更新