我使用LOAD DATA INFILE将一些数据导入到MySQL数据库中。表本身和列使用UTF8字符集,但数据库的默认字符集是Latin1。因为数据库的默认字符类型是Latin1,并且我在没有指定字符集的情况下使用了LOAD DATA INFILE,它将文件解释为Latin1,即使文件中的数据是UTF8。现在我的UTF8列中有很多编码错误的数据。我找到了this article,它似乎解决了类似的问题,即“UTF8插入cp1251”,但我的问题是“Latin1插入UTF8”。我尝试编辑那里的查询以将Latin1数据转换为UTF8,但无法使其工作。要么数据保持不变,要么比以前更加混乱。例如,单词Québec显示为Québec。
[附加信息]
当选择HEX()包装的数据时,Québec的值为5175C383C2A9626563。
这个表的Create Table(缩短)如下:
[附加信息]
当选择HEX()包装的数据时,Québec的值为5175C383C2A9626563。
这个表的Create Table(缩短)如下:
CREATE TABLE MyDBName.`MyTableName`
(
`ID` INT NOT NULL AUTO_INCREMENT,
.......
`City` CHAR(32) NULL,
.......
`)) ENGINE InnoDB CHARACTER SET utf8;
SELECT HEX(name) FROM cities LIMIT 5
。有了这些信息,我可以帮助您根据那篇文章找出正确的修复方法。(顺便说一下:我喜欢那篇文章!它已经救过我好几次了。) - longneck