在我的系统上,一段适用于Python2的代码不适用于Python3。
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码,但是我不明白为什么当文件看起来是一个正确的latin-1 -8文件,并且编码在头文件中时,QXmlStreamReader还希望找到一个ASCII码。
SVG文件是用matplotlib (figure.savefig(...))生成的。
发布于 2017-07-20 15:43:15
这个问题是因为构造函数需要字节而不是字符串,解决方案是使用encode()。
xml_stream = QtCore.QXmlStreamReader(svgData.encode())https://stackoverflow.com/questions/45207989
复制相似问题