2014-02-18 108 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