Простите за неуклюжий способ, которым я подхожу к этому вопросу, все, что я узнал до сих пор по теме кодирования символов, было за последние несколько часов, и я знаю, что я вне глубина. На этот вопрос можно ответить в другом месте на сайте, например, в моих связанных вопросах, но если это так, то эти ответы слишком плотные, чтобы я мог точно понять, что в них делается.
Мне часто требуется grep
через папки с чрезмерно большими текстовыми файлами (общим объемом более 100 ГБ). Я читал о том, как использование LC_ALL=C
может ускорить это значительно , но я хочу быть уверен, что выполнение не повлияет на точность мои поиски.
Файлы старые и прошли через множество различных сетевых источников, поэтому, скорее всего, содержат путаницу символов из разных кодировок, включая UTF-8. ( Кроме того, возможно ли, чтобы один файл содержал символы из нескольких кодировок ?)
Основная часть того, что меня беспокоит, такова: если я хочу найти определенный b
в моих данных, могу ли я ожидать, что каждая буква b
, присутствующая в данных, будет закодирована как ASCII, или же Буква также будет закодирована как UTF-8?
Или, другими словами, символы ASCII всегда и исключительно ASCII? Если даже стандартные английские символы могут быть закодированы как UTF-8, а использование LC_ALL=C grep
игнорирует все символы UTF-8, то это будет означать, что мои поиски будут пропускать поисковые термины, отсутствующие в ASCII, что, очевидно, не будет поведение, которое я хочу, и было бы значительным препятствием для принятия LC_ALL=C
для grep
.