Системы кодирования в 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.
- Если coding-system поддерживает все символы Emacs, значением является
См. Справочную информацию о процессах, в частности описание функций 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