Выбор представления
Иногда полезно просмотреть существующий буфер или строку как многобайтовые, если они были однобайтовыми, или наоборот.
- Функция: set-buffer-multibyte multibyte
-
Задать тип представления текущего буфера. Если multibyte не-
nil, буфер становится многобайтовым. Если multibyte равенnil, буфер становится однобайтовым.Эта функция оставляет содержимое буфера неизменным при просмотре в виде последовательности байтов. В результате содержимое может измениться при просмотре в виде символов; например, последовательность из трёх байтов, которая в многобайтовом представлении считается одним символом, в однобайтовом представлении будет считаться тремя символами. Исключение составляют восьмибитовые символы, представляющие необработанные байты. В однобайтовом буфере они представлены одним байтом, но при переводе буфера в многобайтовый режим преобразуются в двухбайтовые последовательности, и наоборот.
Эта функция устанавливает
enable-multibyte-characters, чтобы зафиксировать используемое представление. Кроме того, она корректирует различные данные буфера (в том числе наложения, текстовые свойства и маркеры), чтобы они охватывали тот же текст, что и прежде.Эта функция выдаёт ошибку, если буфер сужен, поскольку сужение могло произойти в середине последовательности многобайтовых символов.
Эта функция также выдаёт ошибку, если буфер является косвенным. Косвенный буфер всегда наследует представление своего базового буфера.
Следующие две функции устарели и будут удалены в будущей версии Emacs; вместо них используйте encode-coding-string.
- Функция: string-as-unibyte string
Если string уже является однобайтовой строкой, эта функция возвращает саму string. В противном случае она возвращает новую строку с теми же байтами, что и string, но рассматривает каждый байт как отдельный символ (поэтому в результате может быть больше символов, чем в string); исключение составляют восьмибитовые символы, представляющие необработанные байты: каждый из них преобразуется в один байт. Новая строка не содержит текстовых свойств.
- Функция: string-as-multibyte string
Если string является многобайтовой строкой, эта функция возвращает саму string. В противном случае она возвращает новую строку с теми же байтами, что и string, но рассматривает каждую многобайтовую последовательность как один символ. Это означает, что в результате может быть меньше символов, чем в string. Если последовательность байтов в string недопустима в качестве многобайтового представления одного символа, каждый байт этой последовательности рассматривается как необработанный восьмибитовый байт. Новая строка не содержит текстовых свойств.
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Selecting-a-Representation.html