python-mode中文编码问题:UnicodeEncodeError: 'utf-8' codec can't encode character

win7 sapemacs dev 3.00,ipyhon6.21 折腾很久了,找不到好方法ipython shell里面无法显示中文全是\304\343\272\303 换utf-8也不行,请大手们给支招

然而我这里的 ipython shell 是没有问题的.如果你使用的是 Python3, 那么\304\343\272 这些应该就不是乱码,而是utf-8 编码,你可以试着在bash 或者是zsh 里面运行你的代码,很有可能是Ipython shell 的设置的原因. 同学,还有一点就是如果你提问的话,应该去了解一下提问的艺术,这样你可以更快地找到答案,别人也可以更好地提供帮助.比如说你使用的Emacs 版本,Python 版本,Ipython 版本,操作系统版本,或者是的代码的一部分等等.

1 个赞

受教,bash里面没有任何问题,就是在emacs里面有问题,关键是个别时候还是会显示中文的,传几个字符之后就不行了,相当诡异…

先试试在cmd下面能不能用 ipython输入中文

不在emacs下没有问题,这绝对不是utf8编码,google了好多,应该是emacs和ipython都encode了一下造成的。但是问题出在哪里实在找不出来

高效的提问是这样的:

Expected Behavior

Actual Behavior

Steps to reproduce the behavior

Environment

与其一人一句地猜测/盖楼,不如你先把问题搞清楚。最笨最有效的方法:二分法。把无关的 layer /package 排除,圈出问题所在范围。

请问有解决办法了吗?提问似乎已经很清楚了。

对字符编码什么的完全不懂,有没有可能怀疑一下“输入法”?

看这个。

只要一行。

(setenv "LC_ALL" "en_US.UTF-8")

我在windows平台也遇到了这个问题,前面给的解决方案都没解决问题,后面我已经查找终于找到了问题

总结来说就是在运行代码前设置下language-environment:

  (set-language-environment 'Chinese-GB18030)

就ok了(上面正常打印的那位是在*nix系统里,windows中文编码是用gb*的)

到位点你可以弄个wrapper:

(defun my-python-execute-file (arg)
  "execute python file & produce correct chinese outputs"
  (interactive "P")
  (set-language-environment 'Chinese-GB18030)
  (spacemacs/python-execute-file arg)
  (set-language-environment 'UTF-8))
2 个赞

你的问题解决了么,我mac也是会出现这样的情况,如果解决了,求教方式

我也遇到了这个问题,按楼上的设置没有解决问题。以前记得有个方法可以更改Python REPL中的encoding system的,但是忘记是哪条语句了,有朋友会吗?请指教。

感谢您的解答。折腾了1天,试了很多方法,都不好使。唯一一种正常的是使用msys2 上的Python3.7.4 ,Emacs 可以识别为UTF-8,其他版本(Anaconda3.7.5,官网3.7和3.8,Win10商店3.7和3.8)都识别为GBK编码。还有一个特别头痛的问题是在工作用的Dell工作站上使用Emacs 特别慢,每次打开Dired 和 org文件都要等半分钟,但是同样配置在另外的台式机上没问题,Win10都是更新到最新版本。现在暂时先用虚拟机的Linux系统了。