2015-04-26 30 views
1

我在將unicode轉換爲html實體時遇到了問題。Python:Unicode到html實體

這裏是我當前的代碼:

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

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

>> print str(entities) 
áááá 

每個\xc3\xa1 = á(多字節字符),但是當我將其轉換爲實體,我得到2個實體的單個字符。

回答

4

\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') 
'áááá' 
+0

謝謝。這工作。 – Duoramy