2014-02-18 111 views
1

在Windows7下的任何瀏覽器中,我無法加載ipython筆記本。我收到以下錯誤。我試過在瀏覽器,firefox和chrome中。我與Enthought和Anaconda有相同的行爲。Ipython筆記本無法加載

Ipython(沒有筆記本工作正常)。以下是錯誤追蹤的結尾:

ctype = ctype.encode(default_encoding) # omit in 3.x 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd7 in position 2: ordinal not in range(128) 
2014-02-18 15:34:47.401 [tornado.access] ERROR | 500 GET /static/custom/custom.js (127.0.0.1) 145.00ms` 

回答

1

原因在this answer中確定。但

代替

try: 
    ctype = ctype.encode(default_encoding) # omit in 3.x! 
except UnicodeEncodeError: 
    pass 

,你可以嘗試,因爲它是一個DecodeError畢竟:

try: 
    ctype = ctype.encode(default_encoding) # omit in 3.x! 
except UnicodeEncodeError, UnicodeDecodeError: 
    pass 

很可能在多字節編碼系統的情況發生。在這種情況下,在註冊表中有一個MIME類型包含多字節字符。 Python發現它是一個ascii字符串(這是錯誤的,這就是爲什麼你看到ascii解碼錯誤),並試圖在實際編碼的東西之前轉換爲Python的內部字符串表示。然後它會因UnicodeDecodeError異常而悲傷。目前還沒有UnicodeEncodeEorror。

,使整個內部流程清晰,你可以明確地轉換CTYPE爲Unicode,使其繼續在編碼階段,像

ctype = unicode(ctype, youractualencoding).encode(default_encoding) 

然後,它會(可能)這裏扔UnicodeEncodeError,因爲default_encoding在這種情況下ascii不能處理多字節字符(這也是它首先失敗的原因)。所以我們需要處理UnicodeEncodeError和UnicodeDecodeError。

現在你看到這裏發生了什麼。 IPython筆記本試圖加載像custom.js這樣的外部資源。它查看註冊表以找出內容類型。然後它被異國情調的mime類型窒息了。

+0

我和OP有同樣的問題,謝謝你的詳細解釋和鏈接,但是加入UnicodeDecodeError並沒有解決問題,只能刪除try/except塊,它顯然沒用。 – gaborous