【发布时间】:2018-09-17 20:37:49
【问题描述】:
请原谅我处理这个问题的笨拙方式,到目前为止,我在字符编码主题上学到的一切都是在过去几个小时内完成的,我知道我已经不在我的范围内了深度。这可能会在网站的其他地方得到回答,例如在我的链接问题中,但如果有,这些答案太密集,我无法准确理解其中的结论。
我经常需要grep通过超大文本文件(总计超过100GB)的文件夹。我已经阅读了有关如何使用LC_ALL=C can speedthis up considerably 的信息,但我想确保在我的搜索中使用won't compromise the accuracy。
这些文件很旧,并且通过了许多不同的在线来源,因此很可能包含来自许多不同编码的混乱字符,包括 UTF-8。 (顺便说一句,单个文件是否可以包含来自多种编码的字符?)
我最关心的是:如果我想在我的数据中搜索给定的b,我可以期望数据中出现的每个字母b 都被编码为ASCII,还是可以相同字母也被编码为UTF-8?
或者换一种说法,ASCII 字符总是且排他地 ASCII 吗?如果即使是标准英文字符也可以编码为 UTF-8,并且使用 LC_ALL=C grep 会忽略所有 UTF-8 字符,那么这意味着我的搜索会错过不是 ASCII 格式的搜索词,这显然不会我想要的行为,并且将是采用LC_ALL=C 为grep 的一个相当大的障碍。
【问题讨论】:
-
“包含来自多个字符集的字符”:当然(由于字符集之间的重叠),但不是来自多个字符编码。作者只选择了一个,你必须知道它是哪一个。
-
我的错,我确实在该段落中表示不同的字符编码,我现在已经编辑了它,但仍然感谢您为我回答这个问题。
-
ASCII 码是 UTF-8 的子集
-
如果您正在搜索固定字符串,即不使用正则表达式,请尝试使用
grep -f或fgrep
标签: utf-8 character-encoding cygwin text-files ascii