Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将XML文件的编码从ISO-8859-1更改为ISO-8859-8_Python_Bash_Character Encoding - Fatal编程技术网

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

Python 将XML文件的编码从ISO-8859-1更改为ISO-8859-8,python,bash,character-encoding,Python,Bash,Character Encoding,我有一个XML文件在ISO-8859-1中,我需要它在ISO-8859-8 通过使用文件-I output.xml我知道它是ISO-8859-1,我得到charset=ISO-8859-1 xml是使用获取csv文件的python脚本生成的 我试过很多方法: 第一种方法:python 我试过在输入和输出字符串中使用encode和decode,我一直得到UnicodeEncodeError:“charmap”编解码器无法对位置中的字符进行编码。。。bla bla bla bla 我试过使用数据。解

我有一个XML文件在
ISO-8859-1
中,我需要它在
ISO-8859-8

通过使用
文件-I output.xml
我知道它是
ISO-8859-1
,我得到
charset=ISO-8859-1

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

我试过很多方法:

第一种方法:python 我试过在输入和输出字符串中使用
encode
decode
,我一直得到
UnicodeEncodeError:“charmap”编解码器无法对位置中的字符进行编码。。。bla bla bla bla

我试过使用
数据。解码('iso-8859-1')。编码('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
中打开输出文件时,我得到的是乱七八糟的东西,而不是希伯来文字母


希望您能帮助我修复错误,如
UnicodeEncodeError:“charmap”编解码器无法对位置中的字符进行编码…
通常在源文件未按您想象的方式进行编码时显示


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

Python 2.x或3.x?运行
。encode()
。decode()
将产生不同的异常。最好不要将它们混为一谈-了解确切的异常和stacktrace会让人们更好地理解问题。由于编码的工作方式,在没有语言分析的情况下很难检测代码页和字符集之间的差异-
文件
只是做出了最好的猜测。数据类型是什么
数据
?假设您使用的是Python2.x,它是Unicode str还是常规str?如果它是一个普通的str,它的编码是什么?
data
从何而来?知道所有答案将让你知道是应该使用
decode()
还是
encode()
,而不是随意使用它。