我的目标是编写一个XML文件,其中包含少量标签,其值为区域语言。我正在使用Python来执行此操作并使用IDLE(Pythong GUI)进行编程。
当我尝试在xmls文件中写入单词时,它会出现以下错误:
UnicodeEncodeError:'ascii'编解码器 不能编码位置的字符 0-4:序数不在范围内(128)
目前,我没有使用任何xml编写器库;相反,我打开一个文件“test.xml”并将数据写入其中。该行遇到此错误:
f.write(data)
如果我用print语句替换上面的write语句,那么它会在Python shell上正确打印数据。
我正在从不是UTF-8,16或32编码格式的Excel文件中读取数据。它采用其他一些格式。 cp1252正在正确读取数据。
将此数据写入XML文件的任何帮助都将受到高度赞赏。
答案 0 :(得分:6)
您应该.decode
传入的cp1252
获取Unicode字符串,并.encode
utf-8
在f.write(unicodedata.encode('utf-8'))
(到目前为止,XML的首选编码),即
unicodedata
其中.decode('cp1252')
由codecs
获取传入的字节串。
可以使用标准Python库的open
模块打开口红,打开输入和输出文件,每个文件都用适当的编码代替普通codecs
,但是我展示了什么是潜在的机制(通常,但并非总是如此,更直接,更直接地应用它,而不是间接地通过{{1}} - 一个风格和品味的问题)。
重要的是一般原则:在获得输入字符串后立即将其转换为unicode,在整个处理过程中使用unicode,最后将它们转换回字节字符串你可以在输出它们之前。这给你最简单,最直接的生活! - )