我試圖導入一個大的SQL文件;由一個服務器上的mysqldump創建,然後使用iconv轉換;使用這些命令:MySQL在導入時不會保留字符信息
$ mysqldump -uxxx -p xxx > data.sql
$ iconv -f UTF-8 -t ISO-8859-1//TRANSLIT data.sql data.iconv.sql
我注意到, 「\ X91」 數據庫已在轉儲變成 「\ XC3 \ X82 \ XC2 \ X91」,因爲mysqldump的嘗試都轉換爲UTF-8。我用iconv將它轉換回「\ x91」。如果我不轉換它們,它們最終會成爲新服務器上的「\ xc2 \ x3f」;而不僅僅是「\ x3f」,就像我們現在一樣。
因此,如前所述,cp1252編碼有一些獨特的字符,例如「\ x91」和「\ x92」。這兩個字符在新數據庫中都轉爲「\ x3f」;這是我用進口的命令:
$ /opt/mysql5/bin/mysql -uxxx -p -Dxxx < data.iconv.sql
任何人都知道這是怎麼發生和怎樣做才能預防呢?知道這一點,我應該能夠像原來一樣移植數據。
額外信息:
我用this source了用於iconv-事情。正如你所看到的,在這個頁面上,另外一個人也對cp1252產生了麻煩;也許這是原因。
的serverversion是:
老主持人:版本10.10 DISTRIB 5.0.18,爲PC-Linux的GNU(1486) 新主機:版本10.11 DISTRIB 5.0.51,爲PC-Linux的GNU (i686)
提到在原件的問題;如果我不這樣做,mysqldump生成\ xc2 \ x91而不是\ x91。我相信我在與解決方案相同的頁面上閱讀,mysqldump試圖將所有內容都轉換爲utf-8。在這種情況下,錯誤地 – 2008-11-18 12:26:20