我在这里使用这个包:HTML.py 0.04
这是我正在做的事情:
import html
h = html.HTML()
h.p('Some simple Euro: €1.14')
h.p(u'Some Euro: €1.14')
现在当我>>> unicode(h)
时,我收到错误。
UnicodeDecodeError:'ascii'编解码器无法解码位置18的字节0xe2:序数不在范围内(128)
处理此问题的最佳方法是什么? 我需要将html写入文件。
答案 0 :(得分:1)
h.p('Some simple Euro: €1.14')
对于HTML内容,您应该避免字节字符串(Python 2中的''
,Python 3中的b''
)。 HTML的字符模型是Unicode,因此只应使用Unicode字符串(u''
)。
对于简单的ASCII字符,你可以做错。由于大多数常见的字节编码是ASCII的超集,因此Python 2将隐式地将ASCII字节字符串转换为Unicode。但€
字符不是ASCII的一部分,因此Python无法告诉如何阅读它。如果您使用UTF-8编码保存了上面的源代码,那么您将拥有字节字符串b'\xe2\x82\xac'
,这可能意味着€
,€
,竄ャ
或许多其他字符序列取决于使用的编码。