ag grep 搜索 gb18030 编码的文件,通过 iconv 转换成 utf8 后,在不使用临时文件的情况下,如何使得搜索结果带文件名?
- 0次
- 2021-06-29 07:03:56
- idczone
文件编码是 utf8 的话,用 ag 或 grep 都能用中文字符串进行搜索
现在接手的一个项目规定要用 gb18030 编码,vim 中显示是没问题,但 ag grep 都无法搜索中文
用
```
iconv -f gb18030 -t utf8 .* | grep "中文字符串"
```
虽然可以搜索到,但却不显示文件名
虽然不知道 ag grep 是个什么玩意,但是很明显楼主对编码的认知还有些偏差,当文件名是 gb18030,而你使用的是 utf8 的时候,你要记住不仅仅是把一种编码转换成另一种编码,而是两种编码同时在各自体系运行着,只有当你搜索这个过程的时候他们才联系起来,所以在你的这个例子中,当一种编码进入另一种编码体系的时候,都要进行转换。
搜索条件是 utf8 to gb18030 内部执行搜索
搜索结果是 gb18030 to utf8 然是后给你看的
标题忘了加逗号了,应该是“ ag,grep ”
我文章里说的,要搜索的是文件内容,而不是文件名,单纯文件名的话反而没这烦恼