ag grep 搜索 gb18030 编码的文件,通过 iconv 转换成 utf8 后,在不使用临时文件的情况下,如何使得搜索结果带文件名?

2017-07-31 11:11:02 +08:00
 fuxkcsdn
文件编码是 utf8 的话,用 ag 或 grep 都能用中文字符串进行搜索
现在接手的一个项目规定要用 gb18030 编码,vim 中显示是没问题,但 ag grep 都无法搜索中文

```
iconv -f gb18030 -t utf8 .* | grep "中文字符串"
```
虽然可以搜索到,但却不显示文件名
2222 次点击
所在节点    Linux
2 条回复
pine
2017-07-31 15:15:01 +08:00
虽然不知道 ag grep 是个什么玩意,但是很明显楼主对编码的认知还有些偏差,当文件名是 gb18030,而你使用的是 utf8 的时候,你要记住不仅仅是把一种编码转换成另一种编码,而是两种编码同时在各自体系运行着,只有当你搜索这个过程的时候他们才联系起来,所以在你的这个例子中,当一种编码进入另一种编码体系的时候,都要进行转换。
搜索条件是 utf8 to gb18030 内部执行搜索
搜索结果是 gb18030 to utf8 然是后给你看的
fuxkcsdn
2017-07-31 16:15:26 +08:00
@pine 标题忘了加逗号了,应该是“ ag,grep ”
我文章里说的,要搜索的是文件内容,而不是文件名,单纯文件名的话反而没这烦恼

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/379187

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX