如何将ISO8859-15转换成UTF8?

时间:2012-07-03 18:29:33

标签: linux bash text

我有一个用ISO8859-15编码的阿拉伯文件。如何将其转换为UTF8?
我使用iconv,但它对我不起作用。

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

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

8 个答案:

答案 0 :(得分:40)

可能是您的文件未经ISO-8859-15编码?您应该能够使用文件命令进行检查:

file YourFile.txt

此外,您可以使用iconv而不提供原始文件的编码:

iconv -t UTF-8 YourFile.txt

答案 1 :(得分:22)

我发现这对我有用:

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

答案 2 :(得分:10)

我有ubuntu 14,其他答案没有为我工作

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

我找到了这个命令here

答案 3 :(得分:3)

在我的情况下,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

答案 4 :(得分:2)

您可以使用ISO-8859-9编码:

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

答案 5 :(得分:2)

我们遇到了这个问题并予以解决

创建一个名为to-utf8.sh的脚本文件

#!/bin/bash
TO="UTF-8"; FILE=$1
FROM=$(file -i $FILE | cut -d'=' -f2)
if [[ $FROM = "binary" ]]; then
 echo "Skipping binary $FILE..."
 exit 0
fi
iconv -f $FROM -t $TO -o $FILE.tmp $FILE; ERROR=$?
if [[ $ERROR -eq 0 ]]; then
  echo "Converting $FILE..."
  mv -f $FILE.tmp $FILE
else
  echo "Error on $FILE"
fi

设置可执行位

chmod +x to-utf8.sh

进行转化

./to-utf8.sh MyFile.txt

如果要转换文件夹下的所有文件,请执行

find /your/folder/here | xargs -n 1 ./to-utf8.sh

希望有帮助。

答案 6 :(得分:0)

Iconv只是将转换后的文本写入stdout。您必须使用-o OUTPUTFILE.txt作为参数或将stdout写入文件。 ({* 1}} iconv -f x -t z filename.txt > OUTPUTFILE.txt在某些iconv版本中)

iconv -f x -t z < filename.txt > OUTPUTFILE.txt

答案 7 :(得分:0)

我遇到了同样的问题,但是我在this page中找到了答案!它对我有用,您可以尝试。

iconv -f cp936 -t utf-8