从文件导入UTF8数据到MySQL导致截断

我有一个文件名为person.sql与1行:

INSERT INTO Person (sFullname) VALUES ('Thomas Ågren');

如果我从shell运行以下命令:

mysql --default-character-set=utf8 -uusername -ppassword mydatabase < person.sql

我得到截断的结果:

 mysql> select sfullname from person; +-----------+ | sfullname | +-----------+ | Thomas | +-----------+ 

如果我直接从MySQL命令行运行相同的确切插入命令:

mysql> INSERT INTO Person (sFullname) VALUES ('Thomas Ågren');

我得到正确的结果:

 mysql> select sfullname from person; +--------------+ | sfullname | +--------------+ | Thomas Ågren | +--------------+ 

有任何想法吗? 数据库和Person表上的默认字符集正确设置为utf8。 架构定义如下:

 mysql> show create table person \G *************************** 1. row *************************** Table: person Create Table: CREATE TABLE `person` ( `sFullname` varchar(50) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 1 row in set (0.00 sec) 

事实certificate,文本文件person.sql不是UTF-8编码(虽然它似乎是)。 这实际上是latin1( ISO 8859-1 )。

要切换编码,我跑了:

 iconv -f latin1 -t utf-8 person.sql person-utf8.sql 

之后,我能够成功导入而不截断。