Spec-Zone.ru › Elisp

Системы кодирования в Lisp

Вот средства Lisp для работы с системами кодирования:

Функция: coding-system-list &optional base-only

Эта функция возвращает список всех имён систем кодирования (символов). Если base-only отлично от nil, значение включает только базовые системы кодирования. В противном случае оно включает также псевдонимы и варианты систем кодирования.

Функция: coding-system-p object

Эта функция возвращает t, если object является именем системы кодирования или nil.

Функция: check-coding-system coding-system

Эта функция проверяет корректность coding-system. Если она корректна, функция возвращает coding-system. Если coding-system является nil, функция возвращает nil. Для любых других значений она сигнализирует об ошибке, error-symbol которой является coding-system-error (см. signal).

Функция: coding-system-eol-type coding-system

Эта функция возвращает тип перевода конца строки (также известен как eol), используемый системой кодирования coding-system. Если coding-system определяет определённый перевод конца строки, значением возврата является целое число 0, 1 или 2, обозначающие unix, dos, и mac, соответственно. Если coding-system не указывает явно перевод конца строки, возвращаемое значение представляет собой вектор систем кодирования, каждая из которых имеет один из возможных типов перевода конца строки, например:

(coding-system-eol-type 'latin-1)
     ⇒ [latin-1-unix latin-1-dos latin-1-mac]

Если эта функция возвращает вектор, Emacs определит, какой перевод конца строки использовать в процессе кодирования или декодирования текста. При декодировании формат конца строки текста определяется автоматически, и перевод конца строки устанавливается в соответствии с ним (например, формат CRLF стиля DOS подразумевает dos перевод конца строки). При кодировании перевод конца строки берется из соответствующей системы кодирования по умолчанию (например, значение по умолчанию для buffer-file-coding-system в buffer-file-coding-system) или из перевода конца строки по умолчанию, соответствующего используемой платформе.

Функция: coding-system-change-eol-conversion coding-system eol-type

Эта функция возвращает систему кодирования, аналогичную coding-system, за исключением её перевода конца строки, который задан значением eol-type. eol-type должно быть unix, dos, mac, или nil. Если он равен nil, возвращаемая система кодирования определяет перевод конца строки из данных.

eol-type также может быть 0, 1 или 2, обозначающие unix, dos и mac, соответственно.

Функция: coding-system-change-text-conversion eol-coding text-coding

Эта функция возвращает систему кодирования, которая использует перевод конца строки из eol-coding и преобразование текста из text-coding. Если text-coding является nil, она возвращает undecided, или один из её вариантов в зависимости от eol-coding.

Функция: find-coding-systems-region from to

Эта функция возвращает список систем кодирования, которые могут использоваться для кодирования текста между from и to. Все системы кодирования в списке могут безопасно кодировать любые многобайтовые символы в этой части текста.

Если текст не содержит многобайтовых символов, функция возвращает список (undecided).

Функция: find-coding-systems-string string

Эта функция возвращает список систем кодирования, которые могут быть использованы для кодирования текста в string. Все системы кодирования в списке могут безопасно кодировать любые многобайтовые символы в string. Если текст не содержит многобайтовых символов, эта функция возвращает список (undecided).

Функция: find-coding-systems-for-charsets charsets

Эта функция возвращает список систем кодирования, которые могут быть использованы для кодирования всех наборов символов в списке charsets.

Функция: check-coding-systems-region start end coding-system-list

Эта функция проверяет, могут ли системы кодирования в списке coding-system-list кодировать все символы в области между start и end. Если все системы кодирования в списке могут кодировать указанный текст, функция возвращает nil. Если некоторые системы кодирования не могут кодировать некоторые символы, значением является список ассоциаций, каждый элемент которого имеет вид (coding-system1 pos1 pos2 …), что означает, что coding-system1 не может кодировать символы в позициях буфера pos1, pos2, ....

start может быть строкой, в этом случае end игнорируется, а возвращаемое значение ссылается на индексы строки вместо позиций буфера.

Функция: detect-coding-region start end &optional highest

Эта функция выбирает правдоподобную систему кодирования для декодирования текста от start до end. Этот текст должен быть последовательностью байтов, т.е. текстом с одним байтом или многобайтовым текстом только с символами ASCII и восьмибитовыми символами (см. Явное кодирование).

Обычно эта функция возвращает список систем кодирования, которые могут обработать декодирование просканированного текста. Они перечислены в порядке убывания приоритета. Но если highest отлично от nil, возвращаемое значение представляет собой только одну систему кодирования, имеющую наивысший приоритет.

Если область содержит только символы ASCII за исключением таких управляющих символов ISO-2022, как ESC, значением является undecided или (undecided), или вариант, определяющий перевод конца строки, если это можно вывести из текста.

Если область содержит нулевые байты, значением является no-conversion, даже если область содержит текст, закодированный в какой-либо системе кодирования.

Функция: detect-coding-string string &optional highest

Эта функция подобна detect-coding-region, за исключением того, что она работает с содержимым string вместо байтов в буфере.

Переменная: inhibit-null-byte-detection

Если эта переменная имеет значение, отличное от nil, нулевые байты игнорируются при обнаружении кодирования области или строки. Это позволяет правильно определить кодировку текста, содержащего нулевые байты, например, файлов Info с узлами индекса.

Переменная: inhibit-iso-escape-detection

Если эта переменная имеет значение, отличное от nil, последовательности эскейпов ISO-2022 игнорируются при обнаружении кодирования области или строки. В результате ни один текст никогда не обнаруживается как закодированный в какой-либо кодировке ISO-2022, а все последовательности эскейпов отображаются в буфере. Предупреждение: Используйте эту переменную с большой осторожностью, потому что многие файлы в распределении Emacs используют кодировку ISO-2022.

Функция: coding-system-charset-list coding-system

Эта функция возвращает список наборов символов (см. Наборы символов), поддерживаемых coding-system. Некоторые системы кодирования, которые поддерживают слишком много наборов символов, чтобы перечислить их все, возвращают специальные значения:

  • Если coding-system поддерживает все символы Emacs, значением является (emacs).
  • Если coding-system поддерживает все символы Unicode, значением является (unicode).
  • Если coding-system поддерживает все наборы символов ISO-2022, значением является iso-2022.
  • Если coding-system поддерживает все символы в внутренней системе кодирования, используемой Emacs версии 21 (до внедрения внутренней поддержки Unicode), значением является emacs-mule.

См. Справочную информацию о процессах, в частности описание функций process-coding-system и set-process-coding-system, чтобы узнать, как просмотреть или установить системы кодирования, используемые для ввода-вывода с подпроцессом.

Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Lisp-and-Coding-Systems.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API