blove
1
@manateelazycat 大佬,今天我又试了一下 windows 平台上搜索韩文,发现如下现象
当使用
(compilation-start
(concat
"powershell rg "
(encode-coding-string "어떻게" locale-coding-system)
" " rg-search-path
)
nil)
将搜索的关键字转为 gbk-dos 时,执行中,关键字显示为一些空格
当转码为 utf-8 后,并且前后加上双引号
(compilation-start
(concat
"powershell rg "
"\""
(encode-coding-string "어떻게" 'utf-8)
"\""
" " rg-search-path
)
nil)
会提示一个警告信息,说
warning: extra args ignored after 'powershell rg "어떻게\'
这样看来,似乎转码成 utf-8 可以通过 emacs 执行 powershell 识别出韩文关键字!
那么是不是可以推测,어떻게\’ 后面的 \’ 如果是 " 就能正确被 rg 搜索到呢?
那么在 emacs 中写这个 command 的时候, utf-8 编码的 "어떻게\’ 应该如何修正成 “어떻게” 呢?
blove
3
好的!我先研究着!遇到不懂的地方,大佬空闲时指点指点我就OK!
blove
5
外面?里面?不太懂
(setq cmd
(concat
"powershell rg "
"\'\"" (encode-coding-string "니트" 'utf-8) "\"\'"
" "
"C:/rg-search-path"
)
)
(compilation-start cmd nil)
是这样???这样不报警告!但是也没有执行结果。
这样写的话,
关键字换成英文,任何编码都有搜索结果!
关键字换成中文,编码换成 gbk-dos 有搜索结果!
关键字是韩文,编码换成 gbk-dos 搜索有结果但不正确。编码换成 utf-8 无搜索结果!
blove
6
这样写,确实能 echo 出正确结果,韩文输出无乱码
(setq cmd
(concat
;; "powershell rg "
"echo "
"\'\"" (encode-coding-string "니트" 'utf-8) "\"\'"
" "
"C:/rg-search-path"
)
)
(compilation-start cmd nil)
包括空格也是正确输出的!只是把 echo 换成 powershell rg 就没有执行结果了!是不是可以推断,emacs 中运行 powershell rg 还是不认 utf-8 编码,而 gbk 编码的中文就认!
blove
8
好的!我也先暂时放一放,用替代方案!感谢大佬百忙之中的回复!
blove
10
很感谢!
之前也是看过这个帖子!刚刚又仔细看了您推荐的部分。参考设置后,中英文都OK,搜索韩文依然无结果!和之前一样,就是不执行的状态,也不会提示警告或错误信息!
看来 windows 上,编码真是个让人头疼的问题啊!