2012-07-03 202 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.