作者:bai小白 | 来源:互联网 | 2023-05-21 19:23
1> bobince..:
data = open(module_path+'/data/ex-fire.xslt')
xslt_cOntent= data.read()
这使用默认编码隐式地将文件中的字节解码为Unicode文本.(如果XML文件不在该编码中,这可能会产生错误的结果.)
xslt_root = etree.XML(xslt_content)
XML有自己的编码处理和信令,
序言.如果您将一个Unicode字符串传递
给解析器,解析器希望使用该编码来重新表示字节串的其余部分...但不能,因为您已经将字节输入解码为Unicode字符串.
相反,您应该将未解码的字节字符串传递给解析器:
data = open(module_path+'/data/ex-fire.xslt', 'rb')
xslt_cOntent= data.read()
xslt_root = etree.XML(xslt_content)
或者,更好的是,直接从文件中读取解析器:
xslt_root = etree.parse(module_path+'/data/ex-fire.xslt')
2> 小智..:
您还可以解码UTF-8字符串并使用ascii对其进行编码,然后再将其传递给etree.XML
xslt_cOntent= data.read()
xslt_cOntent= xslt_content.decode('utf-8').encode('ascii')
xslt_root = etree.XML(xslt_content)
当初始声明表明utf-8可能性时,为什么要将它编码为ascii?