У меня есть несколько текстовых файлов в кодировке UTF-8, которые отображают странные escape-коды в Emacs. Например, этот текст:
In is quaestione primo exponam quid intelligendum est per hoc nomen 'Deus'; secundo, responsedebo ad quaestionem.
Как показано в Emacs:
Это происходит только в Emacs. Другие редакторы показывают текст правильно. Как я могу решить эту проблему?
Обновление 1
Если я позвоню revert-buffer-with-coding-system
и выберу utf-8
файл, прочитайте правильно. Итак, как правильно догадался Жиль, Emacs не определяет кодировку файла. Если я добавлю код ; -*- coding: utf-8 -*-
в файл, откроется Emacs и отобразит его правильно.
Обновление 2
Я перекодировал файл в «UTF-8 с кодировкой BOM», и теперь он хорошо отображается в Emacs. Я не знаю, в чем разница между этими двумя типами, но Emacs, кажется, знает только о BOMed.
источник
emacs -q
илиemacs -Q
?emacs -q
илиemacs -Q
.Ответы:
По какой-то причине Emacs не распознает файл как UTF-8. Вы можете заставить Emacs снова открыть файл как UTF-8, запустив команду
C-x RET r
(revert-buffer-with-coding-system
) и введяutf-8
.Причина, по которой Emacs не распознал этот файл как UTF-8 (но распознает другой), заключается в том, что он содержит некоторую недопустимую последовательность UTF-8. Эта последовательность будет по-прежнему отображаться в виде обратной косой черты, за которой следуют три восьмеричные цифры другого цвета (
escape-glyph
лицо) после повторной интерпретации файла как UTF-8. Вы можете искать такую последовательность, запустивC-M-s
(isearch-regexp
) и ищагде
^@
вводится вводомC-q C-SPC
(это символ ^ @ = 0, а не двухсимвольная последовательность circleflex-at; символ перед ним является символом циркумфлекса).Вы можете заставить Emacs распознавать файл как UTF-8, добавив переменную файла системы кодирования : поместите что-то вроде
-*-coding: utf-8-*-
первой строки или поместите что-то вроде этого в конец файла (вы можете заменить#
любой префикс, ноLocal Variables:
иEnd:
должны появиться точно так же, как в концеEmacs выбирает кодировку, в соответствии с которой файлы интерпретируются на основе нескольких настроек, в первую очередь языковых сред и переменных
auto-coding-alist
иauto-coding-regexp-alist
. Поскольку у вас есть такая же проблема с этим файлом даже при запускеemacs -Q
, я думаю, что это не проблема с этими настройками, а с содержимым файла.источник
\342
,\200
,\230
и т.д. выбрано. Но если я открою его «правильно» (используя переменную кодирования), то результаты поиска не появятся.emacs -Q
).Уже поздно отвечать на вопрос о спецификации, но я все равно это сделаю.
Метка порядка байтов (BOM) представляет собой последовательность из трех байтов \ xef \ xbb \ xbf, которая в начале файла указывает системам и приложениям, что содержимое кодируется как UTF-8. По сути, это метаданные, которые не рассматриваются как часть содержимого.
Большинство приложений, одним из которых является Emacs, соблюдают спецификацию и записывают в нее все файлы UTF-8. Другие приложения могут почитать его в чтении, но не писать; и другие не знают об этом и могут выдать сообщение об ошибке, когда они сталкиваются с этим. Другими словами, ситуация грязная. Я предпочитаю использовать его везде, где это возможно.
источник
Только для UNIX-подобных систем.
Во многих случаях простое определение кодировки в ~ / .bashrc ~ / bash_profile
выполнено с
в ~ / .profile должен решить вашу проблему.
PS После этих исправлений вам необходимо RELOGIN в своем сеансе, чтобы изменения стали видимыми.
источник