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


#1

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


Emacs 程序 process 进程 不能显示中文
#2

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


#3

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


#4

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


#5

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


#6

高效的提问是这样的:

Expected Behavior

Actual Behavior

Steps to reproduce the behavior

Environment

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


#7

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


#8

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


#9

看这个。

只要一行。

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

#10

我在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))