加载数据infile默认编码

时间:2016-07-28 16:36:26

标签: mysql encoding utf-8

尝试在MYSQL(InnoDB)中使用LOAD DATA INFILE命令时,我无法使编码工作。

"something","something else",\N,"ANOTHER","2012-05-05T19:54:03","2012-12-08T16:14:53","SOMETHING","Something","Hello","HIHI","HEY","999.0","0.01","0.25","06/2012",\N,"2012-06-28","2012-06-28","2012-06-28","2009-03-02","2012-06-28",\N,"LOLOL","","LOLNON",\N,

成为

獯浥瑨楮朢Ⱒ獯浥瑨楮朠敬獥       䅎佔䡅刢Ⱒ㈰ㄲⴰ㔭〵吱㤺㔴㨰㌢Ⱒ㈰ㄲⴱ㈭〸吱㘺ㄴ㨵㌢Ⱒ协䵅呈䥎䜢Ⱒ卯浥瑨楮朢Ⱒ䡥汬漢Ⱒ䡉䡉   䡅夢Ⱒ㤹㤮〢Ⱒ〮〱   \N  \N  ㈰ㄲⴰ㘭㈸   ㈰〹ⴰ㌭〲   ㈰ㄲⴰ㘭㈸       䱏䱏䰢Ⱒ    0   0   \N  \N  \N  \N  \N  \N  \N  \N  \N  \N  \N  \N  \N  \N

其他人也有类似的问题,通过将字符集设置为“utf8”来解决问题,就像我的一样。 (例如this onethis one)在任何问题或答案中都没有明确说明为什么utf8不能自动运行。

这看起来很奇怪,因为人们经常提到他们使用utf8作为默认编码,我在Notepad ++中使用UTF-8格式编码数据,默认排序规则为" utf8 - 默认排序规则&#34 ;。

我进一步查看,发现我的架构默认字符集为utf16,默认排序规则为utf16_general_ci。我相信MYSQL对LOAD DATA INFILE命令使用 架构 默认字符集和排序规则。

MYSQL是否使用架构字符集作为LOAD DATA INFILE的默认值,如果是,那么哪些文档记录在案?如果没有,默认字符集来自哪里?

1 个答案:

答案 0 :(得分:0)

基本上是的。

  

服务器使用character_set_database系统变量指示的字符集来解释文件中的信息。 SET NAMES和character_set_client的设置不影响输入的解释。如果输入文件的内容使用的字符集与默认值不同,通常最好使用CHARACTER SET子句指定文件的字符集。二进制字符集指定“无转换”。

,这是在documentation for LOAD DATA INFILE

的顶部附近找到的

如果您动态设置该变量,那么您可以声称自己并未使用架构默认值,但这样做可以延伸这一点。