用 color-rg 在 windows 平台搜索韩文转码成 gbk-dos 和 utf-8 的发现

@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 编码的 "어떻게\’ 应该如何修正成 “어떻게” 呢?

最近很忙,需要你自己研究了。

1 个赞

好的!我先研究着!遇到不懂的地方,大佬空闲时指点指点我就OK!:blush:

你应该外面用单引号,里面用"

1 个赞

外面?里面?不太懂 :sweat_smile:

(setq cmd
	  (concat
	   "powershell rg "
	   "\'\"" (encode-coding-string "니트" 'utf-8) "\"\'"
	   " "
	   "C:/rg-search-path"
	   ) 
	  )
(compilation-start cmd nil)

是这样???这样不报警告!但是也没有执行结果。
这样写的话,
关键字换成英文,任何编码都有搜索结果!
关键字换成中文,编码换成 gbk-dos 有搜索结果!
关键字是韩文,编码换成 gbk-dos 搜索有结果但不正确。编码换成 utf-8 无搜索结果!

这样写,确实能 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 编码的中文就认! :innocent:

我已经不用windows很多年了,我不知道

1 个赞

好的!我也先暂时放一放,用替代方案!感谢大佬百忙之中的回复!:blush:

1 个赞

很感谢! :pray:
之前也是看过这个帖子!刚刚又仔细看了您推荐的部分。参考设置后,中英文都OK,搜索韩文依然无结果!和之前一样,就是不执行的状态,也不会提示警告或错误信息!
看来 windows 上,编码真是个让人头疼的问题啊! :sweat_smile: