Spec-Zone.ru › Elisp

Символы с кодами, отличными от ASCII, в строках

Существуют два способа представления символов с кодами, отличными от ASCII, в строках Emacs: многобайтовый и однобайтовый (см. Представления текста). Грубо говоря, однобайтовые строки хранят исходные байты, а многобайтовые — удобочитаемый текст. Каждый символ в однобайтовой строке — это байт, то есть его значение находится в диапазоне от 0 до 255. В противоположность этому, каждый символ в многобайтовой строке может иметь значение от 0 до 4194303 (см. Тип символа). В обоих случаях, символы с кодами выше 127 являются символами с кодами, отличными от ASCII.

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

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

Если вы используете последовательность escape в стиле Unicode ‘\uNNNN’ или ‘\U00NNNNNN’ в строковой константе (даже для символа ASCII), Emacs автоматически предполагает, что это многобайтовая строка.

Вы также можете использовать шестнадцатеричные последовательности escape (‘\xn’) и восьмеричные последовательности escape (‘\n’) в строковых константах. Но будьте осторожны: если строковая константа содержит шестнадцатеричные или восьмеричные последовательности escape, и эти последовательности escape все указывают на однобайтовые символы (т.е. меньше 256), и в строке нет других символов с кодами, отличными от ASCII, или последовательностей escape в стиле Unicode, тогда Emacs автоматически предполагает, что это однобайтовая строка. То есть, он предполагает, что все символы с кодами, отличными от ASCII, в строке являются 8-битными сырыми байтами.

В шестнадцатеричных и восьмеричных последовательностях escape код символа, который нужно заменить, может содержать переменное количество цифр, поэтому первый последующий символ, который не является допустимой шестнадцатеричной или восьмеричной цифрой, завершает последовательность escape. Если следующий символ в строке может быть интерпретирован как шестнадцатеричная или восьмеричная цифра, напишите ‘\ ’ (обратный слэш и пробел), чтобы завершить последовательность escape. Например, ‘\xe0\ ’ представляет один символ, ‘a’ с ударением. ‘\ ’ в строковой константе — это то же, что обратный слэш и перевод строки; он не добавляет никаких символов в строку, но завершает предыдущую шестнадцатеричную escape-последовательность.

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/Non_002dASCII-in-Strings.html

Spec-Zone.ru

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