2012-07-03 250 views
30

我有一個編碼爲ISO8859-15的阿拉伯文件。我怎樣才能把它轉換成UTF8?
我使用iconv但它不適用於我。如何將ISO8859-15轉換爲UTF8?

iconv -f ISO-8859-15 -t UTF-8 Myfile.txt 

我想附加文件,但我不知道如何。

+5

不'iconv'打印錯誤信息,或者它轉換錯誤? (順便說一下,你可能會接受更多你之前收到的答案,答覆者會對此表示讚賞。) – thb

+0

不,它不會打印錯誤。我的意思是它不正確地轉換文件。我檢查了文件的編碼,發現它是ISO-8859-15。 – Hakim

+0

你是如何確定它是ISO-8895-15的? – pizza

回答

33

難道你的文件不是ISO-8859-15編碼?你應該能夠檢查與文件命令:

file YourFile.txt

此外,您還可以使用的iconv不提供原始文件的編碼:

iconv -t UTF-8 YourFile.txt

+0

文件命令如何能夠告訴你哪種編碼適合理解文件的內容? –

+2

@ThorstenStaerk我不這麼認爲。手冊頁上說:「如果沒有給出from-encoding,則默認值是從當前語言環境的字符編碼派生的。」所以我相信HighKing關於不提供原始文件編碼的評論是錯誤的。 –

+0

文件實用程序不總是猜測正確的編碼。您需要手動判斷內容是否可以通過以不同編碼打開文件來理解。 – code4j

16

我發現這個工作對我來說:

iconv -f ISO-8859-14 Agreement.txt -t UTF-8 -o agreement.txt 
+1

在執行''文件myfile.txt''時,會給出''ISO-8859''。所以,我已經嘗試過與你的(除''-14''外)。它顯示「ISO-8859不支持」。最後只是我加了''-14''和''ISO-8859-14''一起工作.. – Spike

+1

我通常見過ISO-8859-1 –

2

在我的情況下,file命令告訴錯誤的編碼,所以我試着轉換所有可能的編碼,並找出正確的。

執行此腳本並檢查結果文件。

for i in `iconv -l` 
do 
    echo $i 
    iconv -f $i -t UTF-8 yourfile | grep "hint to tell converted success or not" 
done &>/tmp/converted 
0

您可以使用ISO-8859-9編碼:

iconv -f ISO-8859-9 Agreement.txt -t UTF-8 -o agreement.txt 
6

我有Ubuntu的14個其他的答案在沒有工作對我來說

iconv -f ISO-8859-1 -t UTF-8 in.tex > out.tex 

我發現這個命令here

0

Iconv只是將轉換後的文本寫入標準輸出。您必須使用-o OUTPUTFILE.txt作爲參數或將stdout寫入文件。 (在某些版本的iconv iconv -f x -t z filename.txt > OUTPUTFILE.txticonv -f x -t z <filename.txt> OUTPUTFILE.txt

Synopsis 

iconv -f encoding -t encoding inputfile 

Description 

The iconv program converts the encoding of characters in inputfile from one coded character set to another. 
**The result is written to standard output unless otherwise specified by the --output option.** 

--from-code, -f encoding 

Convert characters from encoding 

--to-code, -t encoding 

Convert characters to encoding 

--list 

List known coded character sets 

--output, -o file 

Specify output file (instead of stdout) 

--verbose 

Print progress information.