2009-04-08 83 views
0

我對the script from this answer做了一些修改。而我在使用unicode時遇到問題。一些問題最終被寫得不好。如何將html實體轉換爲符號?

一些答案和響應最終看起來像:

Yeah.. I know.. I’m a simpleton.. So what’s a Singleton? (2)

我怎樣才能讓’被翻譯成正確的漢字?

注意:如果有問題,我在法語窗口上使用python 2.6。

>>> sys.getdefaultencoding() 
'ascii' 
>>> sys.getfilesystemencoding() 
'mbcs' 

EDIT1:基於瑞安Ginstrom的帖子,我已經能夠糾正輸出的一部分,但我有python的unicode的問題。

在空閒/ python的外殼:

是啊..我知道..保險業監督€™米的傻瓜。所以 what’的一個Singleton?

在文本文件中,當重定向標準輸出

是啊..我知道..我是一個傻瓜。所以 什麼是單身?

我該如何糾正?


EDIT2:我已經試過賈勒特哈迪的解決方案,但它沒有做任何事情。 我在窗口,使用python 2.6,因此我的站點包文件夾位於:

C:\ Python26 \ LIB \站點包

有沒有siteconfig.py文件,所以我創建了一個,粘貼了Jarret Hardie提供的代碼,啓動了一個python解釋器,但似乎尚未加載。

sys.getdefaultencoding() 'ASCII'

我注意到有在site.py文件:

C:\ Python26 \ Lib \ site.py

我試圖改變編碼在功能

def setencoding(): 
    """Set the string encoding used by the Unicode implementation. The 
    default is 'ascii', but if you're willing to experiment, you can 
    change this.""" 
    encoding = "ascii" # Default value set by _PyUnicode_Init() 
    if 0: 
     # Enable to support locale aware default string encodings. 
     import locale 
     loc = locale.getdefaultlocale() 
     if loc[1]: 
      encoding = loc[1] 
    if 0: 
     # Enable to switch off string to Unicode coercion and implicit 
     # Unicode to string conversion. 
     encoding = "undefined" 
    if encoding != "ascii": 
     # On Non-Unicode builds this will raise an AttributeError... 
     sys.setdefaultencoding(encoding) # Needs Python Unicode build ! 

設置編碼爲UTF-8。它工作(當然重新啓動python後)。

>>> sys.getdefaultencoding() 
'utf-8' 

可悲的是,它沒有糾正我的程序中的字符。 :(

回答

1

你應該能夠爲HTML/XML實體轉換成Unicode字符看看這個答案在SO:

Decoding HTML Entities With Python

基本上你想是這樣的:

from BeautifulSoup import BeautifulStoneSoup 

soup = BeautifulStoneSoup(urllib2.urlopen(URL), 
          convertEntities=BeautifulStoneSoup.ALL_ENTITIES) 
0

在siteconfig.py中更改默認編碼是否有效?

在您的站點包文件中(在我的OS X系統上,它位於/Library/Python/2.5/site-packages/)創建一個名爲siteconfig.py的文件。在這個文件中放:

import sys 
sys.setdefaultencoding('utf-8') 

將setdefaultencoding方法是從sys模塊移除一旦siteconfig.py被處理,所以你必須把它放在站點包,這樣在翻譯時啓動Python會讀它。

相關問題