shell-command 调命令中文路径时乱码导致找不到程序,怎么处理?windows

(async-shell-command (format “shiba %s” buffer-file-name) nil nil))

执行的时候,路径里面有中文导致命令执行的时候成乱码了,找不到文件了.

咋办?

难道要把命令串转成 GBK ?不懂 Windows :sleepy:

是吧是吧…很诡异

shell 编码设置不对吧,找找相关设置啥的。

话说玩 emacs 的不是早该脱离 windows 平台了嘛?

人就是為了能用 Windows 学的 Emacs。

以我的语文,还真看不懂这句话

Win的命令行如果用中文只能是GBK。不要盲目设置UTF-8,如果影响命令行的编码就麻烦了。

这是我以前写的有关Win下使用UTF-8的Blog,但现在我的配置也和当时不同了,仅作参考

https://chriszheng.science/2015/09/24/Prefer-UTF-8-in-MS-Windows/

1 个赞

今天也遇到这个问题并完美解决了,方案是对含有中文路径的命令行命令字符串进行主动编码,编码为gbk,然后再执行命令,就不会再出现乱码问题了。一个示例:

(async-shell-command (encode-coding-string "start \"\" \"d:/中文路径/测试.txt\"" 'gbk))