You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

在Windows CMD启动Jupyter Notebook时遭遇UnicodeDecodeError问题

解决Windows 7 CMD启动Jupyter Notebook的Unicode解码错误

我之前也碰到过一模一样的问题,这本质是编码不匹配导致的:Jinja2模板加载器默认用UTF-8编码读取文件,但你的browser-open.html模板实际是用Windows系统默认的GBK(ANSI)编码保存的,字节0x9f是GBK里的有效字符,放到UTF-8解码逻辑里就触发了错误。下面给你几个实用的解决办法:

方法一:重新保存模板文件为UTF-8编码

  • 跟着报错路径找到模板文件:c:\users\sushant\appdata\local\programs\python\python37\lib\site-packages\notebook\templates\browser-open.html
  • 用记事本打开这个文件,点击顶部菜单栏的「文件」→「另存为」
  • 在弹出的窗口里,把「编码」选项改成「UTF-8」,点击「保存」覆盖原文件
  • 回到CMD重新运行jupyter notebook试试

方法二:设置Python强制使用UTF-8编码

  • 在CMD里先执行这条命令:set PYTHONUTF8=1
  • 接着再启动Jupyter:jupyter notebook
  • 这个环境变量会让Python全局强制用UTF-8处理文件读写,直接绕过编码不匹配的问题

方法三:修改Jupyter源码指定模板编码(进阶)

如果前两个方法没效果,可以试试修改Jupyter源码来适配系统编码:

  • 打开文件:c:\users\sushant\appdata\local\programs\python\python37\lib\site-packages\notebook\notebookapp.py
  • 找到_write_browser_open_file方法里加载模板的代码行:template = jinja2_env.get_template('browser-open.html')
  • 找到Jinja2环境初始化的位置,添加encoding='gbk'参数(Windows默认编码是GBK),比如把环境初始化代码改成类似jinja2_env = Environment(loader=loader, encoding='gbk')
  • 保存修改后重启Jupyter

一般来说前两个方法就能搞定,方法三适合有一定Python基础的用户。

内容的提问来源于stack exchange,提问作者user10281103

火山引擎 最新活动