我以前为了搜索中文,设编码(prefer-coding-system 'gbk)
这样在我这win10用可以counsel-rg搜中文,但其它地方又乱码,最后决定全部统一utf-8,(prefer-coding-system 'utf-8)
,然后counsel-rg就不能搜中文了
我解决了flycheck在window不能检查中文文件名的问题 flycheck语法检查在win7不支持中文文件名的问题,解决了 ,想用同样方法用到counsel-rg上,但好像行不通
我以前为了搜索中文,设编码(prefer-coding-system 'gbk)
这样在我这win10用可以counsel-rg搜中文,但其它地方又乱码,最后决定全部统一utf-8,(prefer-coding-system 'utf-8)
,然后counsel-rg就不能搜中文了
我解决了flycheck在window不能检查中文文件名的问题 flycheck语法检查在win7不支持中文文件名的问题,解决了 ,想用同样方法用到counsel-rg上,但好像行不通
刚刚给 color-rg 提了个 中文搜索的补丁,解决方法就是将 rg 那条命令编码成 gbk
(setq command-line "rg --column --color=always -H --heading --max-columns 300 --smart-case -e \"有\" \"d:/Home/\"")
(setq comman-line (encode-coding-string command-line 'gbk))
@haoisli9 你可以试试
这个方法可能不行,修改command-line的编码,会导致要查询的中文同样在默认的编码中出现错误。 rg是可以携带编码参数扩展的,-E gbk可以正确搜索gbk编码的文件,但是对于utf-8的文件就会搜索出错了; rg的帮助中-E 可以携带auto选型来自动识别编码,可是我试了不好使;所以对于目录下统一编码格式的文件,可以携带不同编码,如果编码格式不一样,还没有想到好办法了。
这个方法可行,我测试了
windows下counsel-rg搜索中文乱码报错error2现在有解决方案吗?非win10平台
很奇怪的问题,某些简体繁体结果正常,有些就是乱码,然后就直接error2
可以试试下面的设置有没有效果
(setq-default default-process-coding-system `(utf-8-dos . ,locale-coding-system))
(add-to-list 'process-coding-system-alist '("rg" utf-8 . gbk)
我在win下用这个搜索中文没问题。
刚测试了,调用counsel-rg还是一样报错,准备试试看color-rg
color-rg可以正确搜索中文,不过还是习惯了counsel-rg的minibuffer实时显示,选择之后再跳转到想要的buffer
counsel-rg-basic-command:
"rg" "-M" "240" "--with-filename" "--no-heading" "--line-number" "--color" "never" "%s" "--path-separator" "/" "."
更新一下:
@wsw,已经正常了,原因是我之前的rg.exe有问题,重新下载了官方最新版本,加上你的配置,正常搜索中文,没有再乱码,感谢😊
再请教各位一下,windows下面我在dired里面新建文件和目录还是windows默认编码,有没有办法用elisp把dired里面新建的文件和目录默认utf8编码
修改windows需要改注册表,不方便
设置这一行试试
(prefer-coding-system 'utf-8)
可以是可以,但是我的bongo里面的中文媒体就不能播放了
还是有冲突,确切的说是mpv不能再识别现在的中文媒体文件了,难道还要改mpv的编码配置吗
;;默认设置cos的car是输出到buffer的编码,cdr是传给命令行程序的编码,其他函数的编码有可能要单独设置,
(set-default 'process-coding-system-alist
'(
("[pP][lL][iI][nN][kK]" utf-8-dos . gbk-dos)
("[cC][mM][dD][pP][rR][oO][xX][yY]" utf-8-dos . gbk-dos)
))
(defun counsel-locate-coding (orig-fun &rest args)
(let ((process-coding-system-alist '(
("[pP][lL][iI][nN][kK]" undecided-dos . gbk-dos)
("[cC][mM][dD][pP][rR][oO][xX][yY]" undecided-dos . gbk-dos)
)))
(apply orig-fun args)))
(advice-add 'counsel-locate :around #'counsel-locate-coding)
感谢,zsbd
请问我按照配置了这条语句之后,counsel-rg 确实没有问题,能够正确搜索中文了,但是使用 rg.el 搜索中文还是不行,请问有没有什么建议呀?因为 rg.el 改 options 之类的方便一些
最近在windows上用emacs,也遇到了这个问题。没有特别好的办法。后来看看代码,加了一个advice解决
(defadvice rg-run (around rg-run (pattern files dir &optional literal confirm flags))
(let ((coding-system-for-read 'utf-8))
ad-do-it))
(ad-activate 'rg-run)
感谢,这个设置解决了我在 Windows 下使用 consult-ripgrep
时无法搜索中文的问题。
;; win32平台解决rg.el无法正常搜索中文,在调用rg.exe前使用本地编码修改pattern
(advice-add 'rg-run :around
(lambda (orig-fun &rest args)
(let ((pattern (car args)))
(apply orig-fun
(encode-coding-string pattern locale-coding-system)
(cdr args)))))