【问题标题】:Encoding error in Jupyter when %run another notebook%run 另一个笔记本时 Jupyter 中的编码错误
【发布时间】:2020-03-08 02:44:09
【问题描述】:

我在 Jupyter 笔记本中使用西里尔符号。
在 NoteBook №1 中,我运行 NoteBook №2。

%run ./NB2.ipynb

在 NoteBook №2 中,我写了一些 txt 文件。

TestText = open('C:\\TRASH\\test_text.txt', 'w')
a = 'Иридий' #Iridium
TestText.write(a+'\n')
TestText.close()

当 NB1 启动时,我得到 UnicodeDecodeError。

...can't decode byte 0x98

那里有完整的输出:http://collabedit.com/tcev6

简而言之,Nbformat 库调用 core.reads,它依次以 win-1251 编码读取 NB2。这就是为什么第一个“И”是问题所在。

读取第二个笔记本有没有常规的选择编码的方法?

【问题讨论】:

  • 笔记本总是以 UTF-8 编码保存 - 这是 IPython 中的一个错误,它试图将其读取为 cp-1251。如果您想提出问题,如果没有人先到那里,我应该可以在明天轻松解决此问题。
  • 我已经打开了一个 PR 来解决这个问题:github.com/ipython/ipython/pull/10558

标签: python-3.x character-encoding jupyter-notebook


【解决方案1】:

请参考:

https://nbviewer.jupyter.org/gist/minrk/5491090/analysis.ipynb
change "with io.open(nbfile) as f:"
to "with io.open(nbfile,encoding="utf-8") as f:"

【讨论】:

  • 这个bug很久以前就修复了。
【解决方案2】:

https://github.com/ipython/ipython/pull/10558 此错误已于 2017 年 5 月 13 日修复并合并。

【讨论】:

  • 始终欢迎提供指向潜在解决方案的链接,但请add context around the link,以便您的其他用户知道它是什么以及为什么存在。始终引用重要链接中最相关的部分,以防目标站点无法访问或永久离线。考虑到仅仅是指向外部站点的链接Why and how are some answers deleted? 的一个可能原因。
猜你喜欢
  • 2020-08-26
  • 2021-04-28
  • 2018-09-23
  • 2020-05-17
  • 2020-03-11
  • 1970-01-01
  • 2018-09-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多