Вопрос или проблема
Кто-то прислал мне текстовый файл. Хотя я могу прочитать большую часть документа, иногда встречаются необычные символы. Когда я открываю его в VIM, я вижу <92> на его месте. Когда я использую gedit, я вижу символ, который выглядит как квадрат с двумя нулями и 9 и 4 внутри квадрата.
Существует ли способ декодировать эти забавные символы обратно в читаемый человеком эквивалент?
Я также выполнил следующее в терминале:
johncomputer> file --mime-encoding file.txt
johncomputer> file.txt: : utf-8
Поэтому я думаю, что это закодировано в utf8.
О, и это текстовый документ, в котором большинство символов читаемы. Просто некоторые (не все) акцентированные символы выглядят странно.
Скорее всего, то, что вы видите как <92> и <94>, это закодированные в windows-1252 «умные» (кривые) апостроф и «умная» правосторонняя двойная кавычка. Конечно, это может быть что угодно, но в UTF-8 такие байты не могут появляться «отдельно», только как 2-й или более поздний байт многобайтового представления символа.
Вы знаете кодовую страницу, используемую человеком, который прислал вам файл? Какой у них основной язык?
В Vim вы можете перезагрузить файл, используя другую кодировку, с помощью команды
:e ++enc=cpXXX
Ответ или решение
Для декодирования странных символов в текстовом файле, с которым вы столкнулись, важно определить, какой кодировкой он был изначально сохранен. Судя по вашему описанию, вы видите символы, такие как <92> и <94>, которые, скорее всего, являются представлением символов в кодировке Windows-1252. Эта кодировка часто используется в текстах на английском языке и присуща документам, созданным в средах Windows.
Шаги для Декодирования
-
Определение Кодировки: Вы уже проверили кодировку вашего файла с помощью команды
file --mime-encoding
, и она показала, что файл закодирован в UTF-8. Однако, если в документе отображаются неправильные символы, это может указывать на то, что текст изначально был сохранен в другой кодировке, например, в Windows-1252. -
Перекодировка в Vim: Один из способов проверки и исправления кодировки – использовать текстовый редактор Vim. Вы можете открыть файл и попробовать перезагрузить его с использованием правильной кодировки. Для этого выполните следующую команду:
:e ++enc=cp1252
Это позволит вам увидеть текст файла в кодировке Windows-1252, и символы должны отобразиться корректно.
-
Использование других инструментов: Если вы не можете исправить файл в Vim или предпочитаете другие инструменты, вы можете использовать команду
iconv
в терминале:iconv -f WINDOWS-1252 -t UTF-8 file.txt -o newfile.txt
Это создаст новый файл, где неправильные символы должны быть правильно декодированы и прочитаны.
-
Проверка на наличие проблем в исходном файле: Если файл по-прежнему отображает неверные символы даже после этих шагов, рекомендуется проверить оригинальный источник документа. Узнайте, в какой кодировке файл был создан. Это можно сделать, обратившись к отправителю, который может знать о его кодировке или языке.
Примечания
- Иногда файлы могут содержать комбинации кодировок, и такой подход к декодированию может не сработать, если файл был неправильно обработан или преобразован между различными текстовыми редакторами.
- Если файл содержит только несколько неверно отображаемых символов, возможно, вам придется вручную заменить их в текстовом редакторе.
Заключение
Отвечая на ваш вопрос, ключ к декодированию "странных" символов в текстовом файле заключается в правильном определении исходной кодировки. Процесс, описанный выше, должен помочь вам преобразовать и исправить нежелательные символы. Не забывайте, что работа с кодировками может быть сложной, но с правильными инструментами и подходом вы сможете восстановить читаемость вашего текстового документа.