想问一下 Windows 系统中,buffer 输出中的 utf-8、gbk 转换问题

目的是使用 shell-command 调用外部 python 程序,往新建的临时 buffer 中输入文字内容。
python 程序为

print("这是中文 : 中文")
print("이거 한국 글 : 가게")

emac 中的调用执行代码为

(setq exec (concat "python ~/test.py"))
(let ((buf (get-buffer-create "TTTTTTT")))
  (with-current-buffer buff
	(erase-buffer)
	)
  (shell-command exec buf))
(pop-to-buffer buf))
))

在 linux 中正常输出,无错误


而在 Windows 中,遇到非 中文、非英文,比如韩文,就会出错


请问,在 Windows 环境中,emacs 有没有比较好的处理 encode、decode 的方法?



linux 系统: Arch , emacs 版本 30.0.50
Windows 系统: Win7 SP1 64, emacs 版本 27.2

python 加 -X utf8 激活 utf-8 模式

1 个赞

非常感谢! :pray:实测有效! :+1:

最近也遇到类似问题。

主要原因是个人配置使用的是 utf-8 编码,但在 Windows系统上 Python 默认是使用 gbk 编码的。

除了加 -X utf8 参数的方式,还可以通过以下2种方法让 Python 使用 UTF-8 编码:

  • 在Emacs中设置环境变量 (setenv "PYTHONIOENCODING" "utf-8")

  • 直接在系统中创环境变量 PYTHONIOENCODING,设置它的值为 utf-8

2 个赞

:blush:感谢!又学到两种方法! :+1: :pray:已经记到了笔记中! :writing_hand:

还有一种方法似乎是直接从根本上解决了问题 把电脑系统和常用软件语言设置成英文后,发现电脑卡顿、内存占用这些都有了明显改善?

1 个赞

中文系统还是要用的。开发好的程序还要在中文系统下进行测试。 更改系统语言其实没法解决根源问题的,除非能做到完全不用中文。