我使用LOAD DATA INFILE将一些数据导入到MySQL数据库中。表本身和列使用的是UTF8字符集,但数据库的默认字符集是拉丁文的1.因为数据库的默认字符类型是latin1,并且我使用了LOAD DATA INFILE而没有指定字符集,所以它解释了该文件为latin1,即使该文件中的数据是UTF8。现在我在我的UTF8列中有一堆严重编码的数据。我发现this article似乎解决了类似的问题,即“在cp1251中插入UTF8”,但是我的问题是“Latin1以UTF8插入”。我试着编辑那里的查询来将latin1数据转换为UTF8,但无法让它工作。无论是数据都是相同的,或者比以前更加严重。仅举一个例子,魁北克这个词就表现为Québec。MySQL将latin1数据转换为UTF8
[附加信息]
当选择包裹在HEX数据(),QUA©BEC具有值5175C383C2A9626563。
此表的创建表(缩写)是。
CREATE TABLE MyDBName.`MyTableName`
(
`ID` INT NOT NULL AUTO_INCREMENT,
.......
`City` CHAR(32) NULL,
.......
`)) ENGINE InnoDB CHARACTER SET utf8;
请发布CREATE TABLE语句,以及一些破损的行,但是用十六进制()包装破碎的列,如下所示:'SELECT HEX(name )从城市限制5''。有了这些信息,我可以帮助你根据那篇文章找出解决问题的正确方法。 (顺便说一句:我喜欢那篇文章!它已经拯救了我的屁股了好几次。) – longneck 2009-09-17 19:42:28