LINUX.ORG.RU

Кодировки в Emacs

 


0

3

Здравствуйте!

Есть ли возможность у Emacs при открытие файла определять его кодировку и применять для данного буфера. У меня часть файлов на сетевом хранилище в кодировке винды и каждый раз делать revert утомительно.

Открывай файл с

C-x RET c <encoding> RET C-x C-f

Сохраняй с

C-x RET c <encoding> RET C-x C-w

По идее, при следующем открытии файла, кодировка должна распознаться правильно.

Qazder
()

Есть ли возможность у Emacs при открытие файла определять его кодировку и применять для данного буфера.

В приказном порядке? Да, есть. См. выше.

В автоматическом? Да, из коробки ГНУ Емакс умеет различать, кажется, все кодировки, что можно различить сами по себе, не прибегая к попыткам угадать осмысленность текста.

У меня часть файлов на сетевом хранилище в кодировке винды

«Кодировка Винды» — это надо думать не UTF-16 (ее-то как раз Емакс от всего прочего должен отличать без проблем), а старая однобайтовая CP1251.

Это единственная однобайтовая кодировка, что вы используете? Что ж, тогда никаких проблем — достаточно ее просто указать третьей в приоритете:

(set-coding-system-priority 'utf-8 'utf-16 'windows-1251)

И да простят нас носители cn-gb и прочих.

Zmicier ★★★★★
()

Или же у вас используется еще и КОИ-8, а то пойди и еще какая древность? Ну что ж, для работы в таких зоопарках в старые времена писали эвристические детекторы типа enca(1). Думаю, прикрутить такой к Емаксу будет несложно — поищите, быть может и найдете готовое решение.

Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

(set-coding-system-priority 'utf-8 'utf-16 'windows-1251)

Ну или чуть более развесисто и правильно:

(define-coding-system 'windows-1251
  "Microsoft Windows 8-bit encoding for Cyrillic script."
  :coding-type 'charset
  :mnemonic ?1
  :charset-list '(windows-1251)
  :mime-charset 'windows-1251)

(set-language-info-alist
 "Cyrillic"
 '((charset cyrillic-iso8859-5)
   (coding-system utf-8 utf-16 windows-1251)
   (coding-priority utf-8 utf-16 windows-1251)
   (input-method . "russian-computer")
   (features cyril-util)
   (unibyte-display . windows-1251)
   (sample-text . "Russian (Русский)	Здравствуйте!")
   (documentation . "UTF-8 with fallback to UTF-16 and Windows Cyrillic.")
   (tutorial . "TUTORIAL.ru"))
 '("Cyrillic"))

(set-language-environment "Cyrillic")
Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 1)
Ответ на: комментарий от anonymous

Если файлы можно модифицировать, то попробуйте file variables
Затем у себя надо будет выставить соответствующие кодировки.

Что вы имеете в виду? Прописать кодировку в файл достаточно.

Zmicier ★★★★★
()
Ответ на: комментарий от yoghurt

Так может эти файлы все один раз сконвертить? :)

«Сетевое хранилище» здесь — это, вероятнее всего, торрентокачалка. :-)

Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

Сработало (set-coding-system-priority 'utf-8 'utf-16 'windows-1251)

Спасибо!

knigolaz
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.