python - QXmlStreamReader 引发 UnicodeEncodeError

标签 python pyqt qtxml qxmlstreamreader

在我的系统上,一段适用于 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/

相关文章:

python - 递归程序打印但不返回正确值

python - 使用信号在类之间进行通信

python - 每个 Flask session 存储大数据或服务连接

python - 在 Pyside 中显示 slider 的最小值和最大值

python - mapToScene 需要显示正确转换的 View 吗?

c++ - 如何使用 QDomDocument 获取子节点的值?

qt - 将QDomElement转换为QString/Container类

html - QDomDocument 按类获取元素

python - 从 pandas groupby 中的每个组中选择前 n 个元素

python - 带有 TensorFlow 后端的 Keras 的自定义损失函数问题