2011-08-27 73 views
2

您可能知道,要使電子郵件在許多客戶端中生效,必須對所有Unicode字符進行編碼。我想在Python腳本中自動化這種編碼。將unicode字符編碼爲Python中的HTML實體,不包括標籤

明顯的標籤需要從轉換中排除,否則html將無法工作 - 這樣做確實很複雜 - 爲了確保成功,有必要使用像lxml或beautifulsoup這樣的解析包。

據我所知,這兩個軟件包都不支持轉換爲編號的unicode實體,如漢 (漢)

任何幫助都是非常寶貴的,我一整天都在抨擊這堵牆!

+0

我不是這方面的專家,但你很可能會在這裏找到一些有用的東西:http://stackoverflow.com/questions/629999/beautifulsoup-gives-me-unicodehtml-symbols-rather-than-straight- up-unicode-是 –

+0

確保在標題中指定了UTF-8。 –

回答

0

我也有過類似的問題,但是它總是足夠運行的原始文本,這只是轉換十六進制實體爲十進制的實體,然後將其解析就好了下面的表達式:

>>> hex_entity_pat = re.compile('&#x([^;]+);') 
>>> hex_entity_fix = lambda x: hex_entity_pat.sub(lambda m: '&#%d;' % int(m.group(1), 16), x) # convert hex to dec entities 
>>> BeautifulSoup(hex_entity_fix("<b>&#x6F22;</b>"), convertEntities=BeautifulSoup.ALL_ENTITIES) 
<b>漢</b> 
0

我假設你的電子郵件是HTML格式,而不是純文本。我認爲你正在尋找這個:

some_unicode_string.encode('ascii', errors='xmlcharrefreplace') 

但也許你可以做一些其他的方式。你如何生成HTML的第一個地方?

相關問題