无法将utf16编码的文件导入mysql

时间:2012-09-16 14:33:52

标签: php mysql utf-8 import

我有txt管道分隔文件(非英语 - 下面给出的是波兰语,但其他lang也参与其中),编码utf16,类似于:

head1|head2|head3|head4
brytyjski wytwórca|z jakże bogatą|przedwojenną historią|zapowiedział wypuszczenie
dziś znamy|jedynie paletę kolorów|obejmującą aż|jedną pozycję

我尝试了很多不同的方法将它放入mysql表中:

  • 使用php逐行

  • 以任何我能想到的方式通过控制台使用LOAD DATA INFILE,例如:

 
LOAD DATA INFILE 'C:/\wamp/\www/\hmvc/\prop_tst.txt' INTO TABLE hmvc.table CHARACTER SET 'utf8' FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n' \g

我总是得到:

  • 乱码(错误编码)条目

  • 没有输入任何内容(sql写入默认值)

提一下:我还在utf8,utf16,latin2(东欧编码)......和nada中设置了表格。

顺便说一句: 当我改变编码时,例如在utf8的记事本中我可以导入 - 没问题,但如果我有字符需要utf16(亚洲),或者我想自动输入文件?

Php iconv等似乎无法胜任这项工作。

任何帮助,链接到一些阅读等都会非常感激,因为我刚刚从想法中解脱出来。

2 个答案:

答案 0 :(得分:4)

正如LOAD DATA INFILE Syntax所述:

  

注意

     

无法加载使用ucs2utf16utf32字符集的数据文件。

UTF-8可以表示与UTF-16相同的全套Unicode代码点。也许最简单的方法是只使用那种编码(或者在导入之前用其他语言对文件进行转码,例如通过PHP的iconv()函数)?

答案 1 :(得分:1)

You can not import UTF-16 formatted .txt files (or as Microsoft calls them "UNICODE" text files) into MySQL. You can read about that statement here. What I found the best option to do was - download TextPad and open your text file, then click Save As and make sure you select for ENCODING: UTF-8. Then you can load that file directly into your SQL Table easily. I uploaded about 2.5 million records in less than 10 seconds.

It is currently not possible to use LOAD DATA INFILE to load data files that use these character sets. - MySQL Documentation