В строках Emacs существуют два текстовых представления для не-ASCII символов: многобайтовое и однобайтовое (см. Представления текста). Грубо говоря, однобайтовые строки хранят необработанные байты, в то время как многобайтовые строки хранят текст, читаемый человеком. Каждый символ в однобайтовой строке — это байт, то есть его значение находится в диапазоне от 0 до 255. В отличие от этого, каждый символ в многобайтовой строке может иметь значение от 0 до 4194303 (см. Тип символа). В обоих случаях символы выше 127 являются не-ASCII.
Вы можете включить не-ASCII символ в константу строки, записав его буквально. Если константа строки считывается из многобайтового источника, такого как многобайтовый буфер или строка, или из файла, который будет рассматриваться как многобайтовый, то Emacs считывает каждый не-ASCII символ как многобайтовый и автоматически делает строку многобайтовой. Если константа строки считывается из однобайтового источника, то Emacs считывает не-ASCII символ как однобайтовый и делает строку однобайтовой.
Вместо того чтобы записывать символ буквально в многобайтовую строку, вы можете записать его в виде его кодового значения, используя последовательность экранирования. Подробности о последовательностях экранирования см. в Общий синтаксис экранирования.
Если вы используете любую последовательность экранирования в стиле Unicode, такую как ‘\uNNNN’ или ‘\U00NNNNNN’ в константе строки (даже для ASCII символа), Emacs автоматически предполагает, что она многобайтная.
Вы также можете использовать шестнадцатеричные последовательности экранирования (‘\xn’) и восьмеричные последовательности экранирования (‘\n’) в константах строк. Но будьте осторожны: Если константа строки содержит восьмеричные последовательности экранирования или шестнадцатеричные последовательности экранирования с одной или двумя цифрами, и эти последовательности экранирования указывают только на однобайтовые символы (т.е. кодовые точки меньше 256), и в строке нет других литеральных не-ASCII символов или последовательностей экранирования в стиле Unicode, то Emacs автоматически предполагает, что это однобайтная строка. То есть он предполагает, что все не-ASCII символы, встречающиеся в строке, являются 8-битными необработанными байтами.
В шестнадцатеричных и восьмеричных последовательностях экранирования кодовое значение символа может содержать переменное количество цифр, поэтому первый последующий символ, который не является допустимой шестнадцатеричной или восьмеричной цифрой, завершает последовательность экранирования. Если следующий символ в строке может быть интерпретирован как шестнадцатеричная или восьмеричная цифра, запишите ‘ ’ (обратный слеш и пробел), чтобы завершить последовательность экранирования. Например, ‘\xe0 ’ представляет один символ, ‘a’ с гравис-акцентом. ‘ ’ в константе строки подобен обратный слеш-переносу строки; он не добавляет ни одного символа в строку, но завершает любую предшествующую шестнадцатеричную последовательность.