一段适用于 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(...)
) 生成的。