Ниже приведены средства Lisp для работы с кодировками:
Эта функция возвращает список всех имён кодировок (символов). Если
base-only не равен nil, значение включает только базовые
кодировки. В противном случае оно включает также псевдонимы и варианты
кодировок.
Эта функция возвращает t, если object является именем
кодировки, и nil в противном случае.
Эта функция проверяет корректность coding-system. Если он корректен,
она возвращает coding-system. Если coding-system равен
nil, функция возвращает nil. Для любых других значений она
выдаёт ошибку, чей error-symbol равен coding-system-error
(см. signal).
Эта функция возвращает тип преобразования конца строки (т. н. eol),
используемый coding-system. Если coding-system задаёт
определённое преобразование eol, возвращаемое значение — целое число 0,
1 или 2, обозначающее соответственно unix, dos и mac.
Если coding-system явно не задаёт преобразование eol, возвращается
вектор кодировок, каждая из которых имеет один из возможных типов
преобразования eol, например:
(coding-system-eol-type 'latin-1)
⇒ [latin-1-unix latin-1-dos latin-1-mac]
Если эта функция возвращает вектор, Emacs сам решает, какое
преобразование eol использовать в процессе кодирования или декодирования
текста. При декодировании формат конца строки в тексте определяется
автоматически, и преобразование eol устанавливается соответствующим
(например, формат DOS CRLF подразумевает преобразование dos).
При кодировании преобразование eol берётся из соответствующей кодировки
по умолчанию (например, значение по умолчанию
buffer-file-coding-system для
buffer-file-coding-system) или из преобразования eol,
принятого для данной платформы.
Эта функция возвращает кодировку, аналогичную coding-system, но с
преобразованием eol, задаваемым параметром eol-type.
eol-type должен быть unix, dos, mac или
nil. Если он равен nil, возвращаемая кодировка определяет
преобразование конца строки по данным.
eol-type также может быть равен 0, 1 или 2, что соответствует
unix, dos и mac соответственно.
Эта функция возвращает кодировку, которая использует преобразование
конца строки из eol-coding и текстовое преобразование из
text-coding. Если text-coding равен nil, она возвращает
undecided или один из его вариантов в соответствии с
eol-coding.
Эта функция возвращает список кодировок, которые можно использовать для кодирования текста между from и to. Все кодировки в списке могут безопасно кодировать любые многобайтовые символы в этой части текста.
Если текст не содержит многобайтовых символов, функция возвращает список
(undecided).
Эта функция возвращает список кодировок, которые можно использовать для
кодирования текста string. Все кодировки в списке могут безопасно
кодировать любые многобайтовые символы в string. Если текст не
содержит многобайтовых символов, возвращается список
(undecided).
Эта функция возвращает список кодировок, которые можно использовать для кодирования всех наборов символов из списка charsets.
Эта функция проверяет, могут ли кодировки из списка
coding-system-list закодировать все символы в области между
start и end. Если все кодировки из списка могут
закодировать указанный текст, функция возвращает nil.
Если некоторые кодировки не могут закодировать некоторые символы,
возвращается ассоциативный список, каждый элемент которого имеет вид
(coding-system1 pos1 pos2 …), означающий,
что coding-system1 не может закодировать символы в позициях буфера
pos1, pos2, ....
start может быть строкой; в этом случае end игнорируется, а возвращаемое значение ссылается на индексы строки, а не на позиции буфера.
Эта функция выбирает вероятную кодировку для декодирования текста от start до end. Этот текст должен быть байтовой последовательностью, т. е. однобайтовым текстом или многобайтовым текстом, содержащим только ASCII и восьмибитные символы (см. Явное кодирование и декодирование).
Обычно эта функция возвращает список кодировок, которые могут
обработать декодирование просмотренного текста. Они перечислены в
порядке убывания приоритета. Но если highest не равен
nil, возвращается только одна кодировка — с наивысшим
приоритетом.
Если область содержит только символы ASCII, за исключением
управляющих символов ISO-2022, таких как ESC, значением будет
undecided или (undecided), либо вариант, задающий
преобразование конца строки, если его можно определить по тексту.
Если область содержит нулевые байты, возвращается no-conversion,
даже если область содержит текст, закодированный в какой-либо кодировке.
Эта функция аналогична detect-coding-region, но работает с
содержимым string, а не с байтами в буфере.
Если значение этой переменной не равно nil, нулевые байты
игнорируются при определении кодировки области или строки. Это
позволяет корректно определять кодировку текста, содержащего нулевые
байты, например, Info-файлов с индексными узлами.
Если значение этой переменной не равно nil, управляющие
последовательности ISO-2022 игнорируются при определении кодировки
области или строки. В результате ни один текст никогда не будет
определён как закодированный в какой-либо кодировке ISO-2022, и все
управляющие последовательности становятся видимыми в буфере.
Предупреждение: Используйте эту переменную с
крайней осторожностью, поскольку многие файлы в дистрибутиве Emacs
используют кодировку ISO-2022.
Эта функция возвращает список наборов символов (см. Наборы символов), поддерживаемых coding-system. Некоторые кодировки, поддерживающие слишком много наборов для перечисления, возвращают специальные значения:
(emacs).
(unicode).
iso-2022.
emacs-mule.
См. Информация о процессе, в
частности описание функций
process-coding-system и set-process-coding-system, о
том, как просматривать или устанавливать кодировки, используемые для
ввода-вывода в дочерний процесс.