1

一段适用于 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 文件是用matplotlib( figure.savefig(...)) 生成的。

4

1 回答 1

1

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

xml_stream = QtCore.QXmlStreamReader(svgData.encode())
于 2017-07-20T07:43:15.097 回答