Python:Unicode到html实体

Duo*_*amy 1 python unicode encoding character-encoding

我在将unicode转换为html实体时遇到问题.

这是我目前的代码:

>> name = u'\xc3\xa1\xc3\xa1\xc3\xa1\xc3\xa1'

>> entities = name.encode('ascii', 'xmlcharrefreplace')

>> print str(entities)
áááá
Run Code Online (Sandbox Code Playgroud)

每个\xc3\xa1= á(多字节字符),但当我将其转换为实体时,我为单个字符获得2个实体.

Luk*_*raf 6

\xc3\xa1áUTF-8,而不是 Unicode.

(áááá用Unicode表示u'\xe1\xe1\xe1\xe1')

因此,您需要使用字符串文字来定义它,而不是unicode文字(''vs u'').获得UTF-8之后,需要将其解码为Unicode,而将其再次编码为带有XML实体的ASCII:

>>> name = '\xc3\xa1\xc3\xa1\xc3\xa1\xc3\xa1'.decode('utf-8')
>>> name.encode('ascii', 'xmlcharrefreplace')
'áááá'
Run Code Online (Sandbox Code Playgroud)