默认情况下,Emacs 启动时处于多字节模式:它使用一种内部编码来存储缓冲区和字符串的内容,该编码通过多字节序列表示非 ASCII 字符。多字节模式允许你无限制地使用所有受支持的语言和书写体系。
在极少数特殊情况下,你可能需要针对某个特定缓冲区禁用多字节字符支持。 当某个缓冲区禁用了多字节字符时,我们称之为 单字节模式(unibyte mode)。在单字节模式下,缓冲区中的每个字符其编码范围为 0 到 255(八进制 0377);其中 0 到 127(八进制 0177)代表 ASCII 字符,128(八进制 0200)到 255(八进制 0377)代表非 ASCII 字符。
若要以单字节形式编辑某个文件,可以使用 find-file-literally 访问该文件。See 访问文件的函数. 你可以将一个多字节缓冲区转换为单字节,方法是先将其保存到文件,杀死该缓冲区,再使用 find-file-literally 重新访问该文件。或者,你可以使用 C-x RET c(universal-coding-system-argument),并指定 ‘raw-text’ 作为访问或保存文件时使用的编码系统。See Specifying a Coding System for File Text in GNU Emacs Manual. 与 find-file-literally 不同,以 ‘raw-text’ 方式访问文件不会禁用格式转换、自动解压缩或自动模式选择。
缓冲区局部变量 enable-multibyte-characters 在多字节缓冲区中为非 nil,在单字节缓冲区中为 nil。
模式行也会指示缓冲区是否为多字节模式。在图形化显示界面下,多字节缓冲区的模式行中表示字符集的部分会带有提示,说明该缓冲区为多字节模式。而在单字节缓冲区中,字符集指示项会消失。因此,在单字节缓冲区中(使用图形化显示时),模式行上表示文件换行符格式(冒号、反斜杠等)的位置之前通常没有任何内容,除非你正在使用输入法。
你可以在指定缓冲区中调用命令 toggle-enable-multibyte-characters 来关闭该缓冲区的多字节支持。