Python 将XML文件的编码从ISO-8859-1更改为ISO-8859-8
我有一个XML文件在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 我试过使用数据。解
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()
,而不是随意使用它。