может кто-нибудь сказать мне, как работать, как файл поврежден ...
Я не могу, но, возможно, Вам ПОВЕЗЕТ.
учитывая зашифрованную конфигурацию Куба Рубика, очень легко разработать набор ходов, чтобы вернуть его в исходное состояние. Обычно невозможно определить, какие ходы были использованы для достижения скремблированного состояния , потому что количество возможных последовательностей ходов огромно.
ваши проблемы схожий. Отчасти потому, что вы не даете никаких подсказок о платформах, локалях и инструментах, которые могли быть использованы для создания этого текстового файла.
0x89 не является допустимым первым байтом для трехбайтовой кодировки UTF8 символа. 0xDBAA арабский пустой центр низкой остановки. Что, конечно, неправдоподобно.
Возможно, UTF8 был неверно истолкован как некоторая 8-битная кодировка, а затем сохранен как другая 8-битная кодировка. Если файл был рядом с Японией, вы можете бросить некоторые злоупотребления JIS, Shift-JIS и EUC в смесь.
есть, возможно, десяток правдоподобных символов Юникода и, вероятно, большее количество правдоподобных 8-битных и 16-битных кодировок. Слишком много перестановок, чтобы попробовать вручную. Если бы это было достаточно важно, я бы, возможно, написал код, чтобы попробовать все перестановки начального символа плюс два скремблирования и посмотреть, прибудут ли они в 0x89DBAA.
- создать текстовый файл UTF8 без BOM (рекомендуется консорциумом Unicode).
- прочитайте этот файл с помощью блокнота MS-Windows в локали" Windows-Latin-1".
Блокнот неправильно UTF8 как CP-1252,
отчасти потому, что UTF-8 не имеет знака порядка байтов и потому, что
много инструментов Майкрософт злоупотребляют / злоупотребляют меткой байт-заказа как
Индикатор кодирования.
- сохранить файл как "Unicode".
Блокнот использует неправильную терминологию Microsoft, и переводит
что он думает, это CP-1252 в UTF-16 little-endian (с BOM)
но это слишком просто (я не пробовал).
Я уверен, что ответ будет стало очевидным в ретроспективе. Но сейчас это небольшое утешение.
... и как это исправить?
учитывая, что раскрывается только содержание английского слова don't
мы можем сделать вывод, что все данные 95% ASCII. То делает если возможный для использования ручного осмотра ...
составьте список всех различных последовательностей gobbledegook и вероятных замен, начиная с 0x89dbaa
->'
.
используйте инструмент, ориентированный на байты (например,sed
), чтобы сделать эти замены.
???
профит!