将其加载到Postgres DB

时间:2015-08-08 01:05:06

标签: mysql postgresql encoding

我有一个包含中文字符的源文件。将该文件加载到Postgres DB中的表后,所有字符都出现乱码,我无法看到中文字符。 Postgres DB上的编码是UTF-8。我在本地mac osx上使用psql实用程序检查输出。源文件是使用mysqldump从mySql db生成的,只包含插入语句。

INSERT INTO "trg_tbl" ("col1", "col2", "col3", "col4", "col5", "col6", "col7", "col7", 
                       "col8", "col9", "col10", "col11", "col12", "col13", "col14", 
                       "col15", "col16", "col17", "col18", "col19", "col20", "col21", 
                       "col22", "col23", "col24", "col25", "col26", "col27", "col28", 
                       "col29", "col30", "col31", "col32", "col33") 
VALUES ( 1, 1, '与é<U+009D>žç½‘_首页&频é<U+0081>“页顶部广告ä½<U+008D>(946×90)',
               '通æ <U+008F>广告(Leaderboard Banner)',
         0,3,'',946,90,'','','','',0,'f',0,'',NULL,NULL,NULL,NULL,NULL,
         '2011-08-19 07:29:56',0,0,0,'',NULL,0,NULL,'CPM',NULL,NULL,0);

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:0)

在生成该SQL语句之前,文本被破坏了。您可能希望文本以与开头,而不是“Mojibake”版本:SET NAMES。我建议您修改转储以生成utf8字符或十六进制。然后负载可能工作,或者可能有更多地方指定utf8,例如CHARACTER SET utf8mb4或等效物。

此外,对于中文,在MySQL中首选é<U+009D>ž

{{1}}如此严重,我不想弄清楚第二个角色。