单字节和多字节文本表示形式使用不同的字符编码。单字节表示形式的有效字符编码范围是 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)的数值表示 8 位原始字节。
若 charcode 是有效的字符编码,则返回 t,否则返回 nil。
(characterp 65)
⇒ t
(characterp 4194303)
⇒ t
(characterp 4194304)
⇒ nil
该函数返回 Emacs 中有效字符码点的最大值。若可选参数 unicode 为非 nil,则返回 Unicode 标准定义的最大字符码点(该值小于 Emacs 支持的最大码点)。
(characterp (max-char))
⇒ t
(characterp (1+ (max-char)))
⇒ nil
该函数返回 Unicode 名称为 string 的字符。若 ignore-case 为非 nil,则匹配 string 时忽略大小写。若 string 并非任何字符的名称,则返回 nil。
;; U+03A3
(= (char-from-name "GREEK CAPITAL LETTER SIGMA") #x03A3)
⇒ t
该函数返回 char 对应的 Unicode 名称。若 char 不是有效字符或无 Unicode 名称,则返回 nil。
该函数返回当前缓冲区中字符位置 pos 处的字节值。若当前缓冲区为单字节模式,则直接返回该位置的字节;若为多字节模式,ASCII 字符的字节值与其字符码点相同,而 8 位原始字节会被转换为对应的 8 位编码。若 pos 处的字符为非 ASCII 字符,函数会抛出错误。
可选参数 string 表示从该字符串而非当前缓冲区中获取字节值。