34.5 Коды символов

Однобайтовое и многобайтовое текстовые представления используют разные коды символов. Допустимые коды символов для однобайтового представления в диапазоне от 0 до #xFF (255) — значения, которые могут поместиться в один байт. Допустимые коды символов для многобайтового представления в диапазоне от 0 до #x3FFFFF. В этом пространстве кодов значения от 0 до #x7F (127) предназначены для ASCII символов, а значения от #x80 (128) до #x3FFF7F (4194175) — для не-ASCII символов.

Коды символов Emacs являются надмножеством стандарта Unicode. Значения от 0 до #x10FFFF (1114111) соответствуют символам Unicode с тем же кодовым числом; значения от #x110000 (1114112) до #x3FFF7F (4194175) представляют символы, не объединенные с Unicode; а значения от #x3FFF80 (4194176) до #x3FFFFF (4194303) представляют восьмибитные необработанные байты.

Функция: characterp charcode

Эта функция возвращает t, если charcode является допустимым символом, и nil в противном случае.

(characterp 65)
     ⇒ t
(characterp 4194303)
     ⇒ t
(characterp 4194304)
     ⇒ nil
Функция: max-char &optional unicode

Эта функция возвращает наибольшее значение, которое может иметь допустимый кодовый пункт символа в Emacs. Если необязательный аргумент unicode не равен nil, она возвращает наибольший кодовый пункт символа, определенный стандартом Unicode (который меньше максимального поддерживаемого Emacs кодового пункта).

(characterp (max-char))
     ⇒ t
(characterp (1+ (max-char)))
     ⇒ nil
Функция: char-from-name string &optional ignore-case

Эта функция возвращает символ, чье имя Unicode равно string. Если ignore-case не равен nil, регистр в string игнорируется. Эта функция возвращает nil, если string не обозначает символ.

;; U+03A3
(= (char-from-name "GREEK CAPITAL LETTER SIGMA") #x03A3)
     ⇒ t
Функция: char-to-name char

Эта функция возвращает имя Unicode для char. Она возвращает nil, если char не является символом или не имеет имени Unicode.

Функция: get-byte &optional pos string

Эта функция возвращает байт по позиции символа pos в текущем буфере. Если текущий буфер однобайтовый, это буквально байт по этой позиции. Если буфер многобайтовый, значения байтов ASCII символов совпадают с кодовыми пунктами символов, тогда как восьмибитные необработанные байты преобразуются в свои 8-битные коды. Функция сигнализирует об ошибке, если символ по pos не является ASCII.

Необязательный аргумент string означает получение значения байта из этой строки вместо текущего буфера.