在我的系统上,一段适用于 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 字符,但我不明白为什么 QXmlStreamReader
期望在文件似乎是正确的情况下找到 latin-1
编码UTF-8 文件,其编码在 header 中指定。
SVG 文件是使用 matplotlib
生成的(figure.savefig(...)
)。
最佳答案
该问题是因为构造函数需要字节而不是字符串而引起的,解决方案是使用encode()
。
xml_stream = QtCore.QXmlStreamReader(svgData.encode())
关于python - QXmlStreamReader 引发 UnicodeEncodeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45207989/