我有一個SQL轉儲文件由不正確存儲西里爾俄羅斯(WINDOWS-1251)的文本,例如Èðàíñêèå
應正常顯示爲Иранские
的。如何將存儲爲LATIN1(sql)的西里爾文轉換爲帶有iconv的真正的UTF8西里爾語?
在過去,我已經成功轉換的SQL文件,但在我做了什麼以及以什麼順序內存失敗。
邏輯上它是有道理的,因爲它存儲在LATIN1我會從LATIN1轉換爲WINDOWS-1251,然後從WINDOWS-1251轉換爲UTF-8 // TRANSLIT或類似的東西。
到目前爲止,我已經試過:
iconv -f WINDOWS-1251 -t UTF-8//TRANSLIT -o new.sql snippet.sql
輸出:
Èðà ГГ±ГЄГЁГҐ
(不是我想要的)
2.
iconv -f LATIN1 -t UTF-8//TRANSLIT -o new.sql snippet.sql
OUTP UT:
Ã<88>ðà Ãñêèå
(不是我想要的任一)
注意
這是可能的,我可能會轉換一次,然後兩次讓我想要的結果,但我敢確保在最後一步我從
WINDOWS-1251
轉換爲UTF-8//TRANSLIT
,因爲這是在筆記中寫下來的。另一個需要注意的是,當文件編碼爲utf8(在vim中爲native)時,我在SQL文件中查看
Èðàíñêèå
。如果我在vim中使用set enc=latin1
,那麼我會看到~Hð| íñêèå
,好像這並不會讓它更混亂。
真棒 - 謝謝。雖然我不得不用大約40-50左右的UTF8字符替換一個臨時字符串來指示Unicode hexpoint,因爲iconv無法在沒有這些字符的情況下進行處理,但它確實可行。 – 2010-03-07 14:10:00
其實它似乎忘記了在初始iconv中指定'// TRANSLIT',應該這樣做。 – 2010-03-07 14:22:39