正常 find-file 路径可以正常显示,只有用 emacsclient 打开文件的路径中包含中文会乱码。
因为乱码导致文件找不到,所以按照创建新文件打开一个空的 buffer
find-file 时路径中的中文可以正常显示:
Windows 下用 emacs 就是坑多啊
正常 find-file 路径可以正常显示,只有用 emacsclient 打开文件的路径中包含中文会乱码。
因为乱码导致文件找不到,所以按照创建新文件打开一个空的 buffer
find-file 时路径中的中文可以正常显示:
Windows 下用 emacs 就是坑多啊
试试这个?
(setq file-name-coding-system 'gbk)
如果不行试试以下命令的排列组合:
(setq file-name-coding-system 'mule-utf-8-dos)
(set-language-environment "UTF-8")
(prefer-coding-system 'utf-8) ; Default setting
Windows 下是怎么通过 emacsclinet 打开文件?命令行?双击?
如果是命令行,是否需要提前设置 locale?
emacsclinet 跟常规启动有区别,编码相关的配置可能要放到 after-make-frame-functions
才能生效,不知道是不是这个原因。
另外就是可以考虑做一个包装,把双击打开关联到自定义的程序/脚本,在程序/脚本中对中文路径进行编码,然后传给 emacsclient.exe。
这些都不行,如果是这些变量的问题,应该 server 端也显示不了中文路径的
wrapper 应该可行,不过不知道 cmd 脚本应该怎样写,再无耻地做一次伸手党
在传递给 emacsclient 之前把路径转为 utf-8 编码
批处理脚本大概是这样写的(语法不保证正确。msys 下应该有 iconv.exe?):
rem File: emacsclient.bat
rem Usage: emacsclient.bat /path/to/file
echo %1|iconv.exe -f gb18030 -t utf-8|set /p filepath=
emacsclient.exe %filepath%
或者使用 python 之类更加灵活语言。
不清楚具体的情况,我这里(Emacs 26.0.91)默认就可以正常打开并显示中文文件(名)。
runemacs -Q --daemon
那奇怪了,我先试试 wrapper,你一般是怎么打开文件的?双击?右键?
我常年用 emacsclientw.exe 开文件,遇到乱码就试着设置那几个变量,其他都没有动过。
右键菜单是这么写的
\path\to\emacsclientw.exe -na "runemacs.exe" -c -n "%1"
好的,我再试试
不太懂啊,为什么 emacsclientw 后面又跟一个 runemacs?
请问这个问题解决了吗?我现在也遇到了同样的问题。之前按照网上的说法解决过,现在不知怎么又不行了,原来的方法也忘了
不知道这样可不可行,user-configure下添加 (setq-default pathname coding system 'gbk) (setq file- name-coding- system ’gbk) 反正我电脑上是解决了这一问题
我的设置是这样的,可以参考一下,目前在我的win7电脑上用emacsclient打开文件不会出现这个问题:
(when (eq system-type 'windows-nt)
(setq locale-coding-system 'gb18030) ;此句保证中文字体设置有效
(setq w32-unicode-filenames 'nil) ; 确保file-name-coding-system变量的设置不会无效
(setq file-name-coding-system 'gb18030) ; 设置文件名的编码为gb18030
)
解决。紫薯补丁