Я столкнулся с чем-то немного странным с hexl-mode в Emacs (GNU Emacs 22.2.1 / Debian GNU Linux).
У меня был текстовый файл UTF8, к которому яхотел добавить спецификацию (маска порядка байтов: даже если не рекомендуется добавлять бессмысленную спецификацию в файл UTF8, в спецификации четко указано, что спецификация в файле UTF8 является допустимой).
Вот как файл видится командой file :
...$ file /tmp/test.txt
/tmp/test.txt: UTF-8 Unicode English text
Работает следующее:
open the UTF8 file (without BOM) in text mode
add three ASCII characters at the beginning of the file
close the file (<-- see, very important, I need to close the file)
M-x hexl-mode
M-x hexl-find-file (re-opening the file but this time in hexl-mode)
M-x hexl-insert-hex-string
EFBBBF
C-x C-s (saving the file)
M-x hexl-mode-exit
Затем я получаю файл UTF-8с спецификацией, как показано здесь командой file :
...$ file /tmp/test.txt
/tmp/test.txt: UTF-8 Unicode (with BOM) English text
(обратите внимание, что команда file обнаруживает это эвристически как UTF-8 с спецификацией "английский текст")но файл содержит много символов евро: я хочу сказать, что перед добавлением спецификации это НЕ файл ASCII, а уже файл UTF-8, как показано выше)
Однако япросто не могу открыть файл в Emacs сначала , затем вызвать hexl-mode , затем попытаться заменить первыйee символов на 0xEB 0xFF 0xBF (BOM) и затем сохраните.
Очевидно, что при переключении с (Текст) на (Hexl) возникают сумасшедшие проблемы с преобразованием.mode.
Я что-то упускаю из виду, или я немного сломан, чтобы преобразовать в / из Text / Hexl, и мне лучше сначала переключиться на hexl-mode , выполнить редактирование в шестнадцатеричном формате, затем сохранить& закрыть файл и снова открыть в текстовом режиме?