在我的系统上,一段与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
期望在文件看起来像是标头中指定编码的正确UTF-8文件时找到latin-1
编码。SVG文件是使用
matplotlib
(figure.savefig(...)
)生成的。 最佳答案
造成此问题的原因是,构造函数需要字节而不是字符串,解决方法是使用encode()
。
xml_stream = QtCore.QXmlStreamReader(svgData.encode())
关于python - QXmlStreamReader引发UnicodeEncodeError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45207989/