使用HTML中的unicode和非unicode字符进行编码

时间:2015-05-22 07:27:55

标签: python html unicode unicode-string python-unicode

我在这里使用这个包: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写入文件。

1 个答案:

答案 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',这可能意味着€竄ャ或许多其他字符序列取决于使用的编码。