Spec-Zone.ru › Elisp

Преобразование текстовых представлений

Emacs может преобразовывать текстовые данные с однобайтовым кодированием в многобайтовое; он также может преобразовывать многобайтовый текст в однобайтовый, при условии, что многобайтовый текст содержит только ASCII и 8-битные сырые байты. В целом, эти преобразования происходят при вставке текста в буфер или при объединении текста из нескольких строк в одну строку. Вы также можете явно преобразовать содержимое строки в одно из представлений.

Emacs выбирает представление для строки на основе текста, из которого она построена. Общее правило заключается в преобразовании однобайтового текста в многобайтовый текст при объединении его с другим многобайтовым текстом, поскольку многобайтовое представление является более универсальным и может содержать любые символы, имеющиеся в однобайтовом тексте.

При вставке текста в буфер Emacs преобразует текст в представление буфера, как указано в enable-multibyte-characters в этом буфере. В частности, при вставке многобайтового текста в однобайтовый буфер Emacs преобразует текст в однобайтовый, даже если это преобразование, как правило, не может сохранить все символы, которые могут быть в многобайтовом тексте. Другая естественная альтернатива — преобразовать содержимое буфера в многобайтовый формат — неприемлема, поскольку представление буфера — это выбор пользователя, который не может быть автоматически переопределен.

Преобразование однобайтового текста в многобайтовый текст оставляет ASCII-символы неизменными и преобразует байты с кодами от 128 до 255 в многобайтовое представление сырых восьмибитных байтов.

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

Преобразование однобайтового текста в многобайтовый и обратно в однобайтовый воспроизводит исходный однобайтовый текст.

Следующие две функции либо возвращают аргумент string, либо новую строку без текстовых свойств.

Функция: string-to-multibyte string

Эта функция возвращает многобайтовую строку, содержащую ту же последовательность символов, что и string. Если string — многобайтовая строка, она возвращается без изменений. Функция предполагает, что string содержит только символы ASCII и сырые 8-битные байты; последние преобразуются в их многобайтовое представление, соответствующее кодам #x3FFF80 по #x3FFFFF, включительно (см. коды символов).

Функция: string-to-unibyte string

Эта функция возвращает однобайтовую строку, содержащую ту же последовательность символов, что и string. Если string — однобайтовая строка, она возвращается без изменений. В противном случае символы ASCII и символы в наборе eight-bit преобразуются в соответствующие значения байтов. Используйте эту функцию для аргументов string, которые содержат только символы ASCII и восьмибитные символы; функция сигнализирует об ошибке, если обнаруживаются другие символы.

Функция: byte-to-string byte

Эта функция возвращает однобайтовую строку, содержащую один байт данных символа, byte. Она сигнализирует об ошибке, если byte не является целым числом от 0 до 255.

Функция: multibyte-char-to-unibyte char

Преобразует многобайтовый символ char в однобайтовый символ и возвращает этот символ. Если char не является ASCII и не восьмибитным, функция возвращает -1.

Функция: unibyte-char-to-multibyte char

Преобразует однобайтовый символ char в многобайтовый символ, предполагая, что char является либо символом ASCII, либо сырым 8-битным байтом.

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/Converting-Representations.html

Spec-Zone.ru

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