gpt4 book ai didi

带有强调字符的 python xml.sax 解析问题

转载 作者:数据小太阳 更新时间:2023-10-29 02:11:21 25 4
gpt4 key购买 nike

以下代码会导致众所周知的“UnicodeDecodeError:‘ascii’编解码器无法解码”错误:

import xml.sax
import io
parser = xml.sax.make_parser()
parser.parse(io.StringIO(u'<a>é</a>'))

同时

import xml.sax
parser = xml.sax.make_parser()
parser.parse(open('foo'))

有效(文件“foo”的内容是 <a>é</a> )。

在我的例子中,我需要解析 XML 字符串,而不是文件。

我的问题有什么解决方案吗?谢谢。

最佳答案

文件包含字节,必须有一些编码来存储 Unicode 字符,所以使用 BytesIO对象代替:

#coding: utf8
import xml.sax
import io
parser = xml.sax.make_parser()
parser.parse(io.BytesIO(u'<a>é</a>'.encode('utf8')))

注意:#coding: utf8指定了源文件的编码; .encode('utf8') 指定要存储在 BytesIO 对象中的 Unicode 字符串的编码。技术上使用非 Unicode 字符串:

#coding: utf8
parser.parse(io.BytesIO('<a>é</a>'))

也会起作用,因为字节字符串已经在源文件编码中,但它使意图更清晰。源文件和 BytesIO 编码可能不同。

关于带有强调字符的 python xml.sax 解析问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8260856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com