将XML文件的编码从ISO-8859-1更改为ISO-8859-8

时间:2016-06-23 09:35:47

标签: python bash character-encoding

我有一个位于ISO-8859-1的XML文件,我在ISO-8859-8中需要它 我知道ISO-8859-1使用的是file -i output.xml,我得到charset=iso-8859-1

使用获取csv文件的python脚本生成xml。

我尝试了很多方法:

第一种方式:python

我尝试在输入和输出字符串中使用encodedecode,并且我不断获得UnicodeEncodeError: 'charmap' codec can't encode characters in position ... bla bla bla

我已尝试使用data.decode('iso-8859-1').encode('iso-8859-8')
或者在输出方法中,

def write(data, output_file_name):
    with open(output_file_name, "wb") as output_file:
        output_file.write(data.encode('is-8859-8'))

并且都没有效果

第二种方式:bash

没有python中的任何其他编码代码,这是我使用的bash脚本

convertFileEncoding()
{
    local FILE_PATH=$1
    local SRC_ENC=$2
    local DEST_ENC=$3

    iconv -f $SRC_ENC -t $DESC_ENC//TRANSLIT --output=$FILE_PATH.tmp $FILE_PATH
    mv $FILE_PATH.tmp $FILE_PATH
}

input=$1
output=$2
./csv_to_xml.py --csv $input --output  $output
convertFileEncoding $output ISO-8859-1 ISO-8859-8

两种方式都没有效果。当我在gvim:set enc=iso-8859-8中打开输出文件时,我搞砸了东西而不是希伯来字母

希望你能帮我解决这个问题

1 个答案:

答案 0 :(得分:0)

UnicodeEncodeError: 'charmap' codec can't encode characters in position ...之类的错误通常会在您的源文件没有像您认为的那样真正编码时显示。

要确保您的文件编码为ISO-8859-1,您可以使用Python module named chardet进行检查,该文件可以通过pip安装并且非常易于使用。