将数据写入xml文件时出现UnicodeEncodeError

时间:2010-05-10 04:51:58

标签: python xml encoding

我的目标是编写一个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文件的任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:6)

您应该.decode传入的cp1252获取Unicode字符串,并.encode utf-8f.write(unicodedata.encode('utf-8')) (到目前为止,XML的首选编码),即

unicodedata

其中.decode('cp1252')codecs获取传入的字节串。

可以使用标准Python库的open模块打开口红,打开输入和输出文件,每个文件都用适当的编码代替普通codecs,但是我展示了什么是潜在的机制(通常,但并非总是如此,更直接,更直接地应用它,而不是间接地通过{{1}} - 一个风格和品味的问题)。

重要的是一般原则:在获得输入字符串后立即将其转换为unicode,在整个处理过程中使用unicode,最后将它们转换回字节字符串你可以在输出它们之前。这给你最简单,最直接的生活! - )

相关问题