QXmlStreamReader引发UnicodeEncodeError

时间:2017-07-20 07:22:23

标签: python pyqt qtxml qxmlstreamreader

与Python 2一起使用的一段代码在我的系统上不能与Python 3一起使用。

f = open("plotwidget.svg")
svgData = f.read()
xml_stream = QtCore.QXmlStreamReader(svgData)

这会引发以下错误:

UnicodeEncodeError 'latin-1' codec can't encode character '\u2212' in position 12688: ordinal not in range(256)

该字符确实不是ASCII字符,但是当文件看起来是一个正确的UTF-8文件时,我不明白为什么QXmlStreamReader期望找到latin-1编码。标头中指定的编码。

SVG文件是使用matplotlibfigure.savefig(...))生成的。

1 个答案:

答案 0 :(得分:1)

问题是由于构造函数需要字节而不是字符串,解决方案是使用encode()

xml_stream = QtCore.QXmlStreamReader(svgData.encode())