# 2.4.8.2 字符串中的非ASCII码

在 Emacs 中有两中 非ASCII码的文本表示方式：多字节和单字节（详情查阅文本表示章节）。粗略的来说，单字节字符串储存原字节，而多字节字符储存人类可识别文本。在单字节字符串中，所有的字符都是字节，其中，编号在 0 到 255 之间。相比之下，多字节字符中，会包含从 0 到 4194303 个值（详情查阅字符类型）。不论哪种情况，超出 127 的都统称为非ASCII。

你可以按照字面写法直接将非ASCII字符直接写在字符串里。如果一个字符串是从一个多字节的源，比如多字节缓冲区或多字节字符，或多字节文件，读取来的，那么 Emacs 会自动将所有非ASCII码按照多字节字符的方式读取进来，并将这个字符串作为多字节字符串。不过如果这个字符串是从一个单字节源读取的非ASCII字符，那么Emacs 就会按照单字节方式读取，并将这个字符串定义为单字节字符串。

在多字节的字符串中，你也可以不直接按着字面写法写，而是使用转义符号加上这个字符对应的字符码。详情查阅通用转义语法。

如果你在一个字符串内使用了 Unicode 风格的转义序列 '\uNNNN' 或者 '\U00NNNNNN'，那么 Emacs 会自动假定这个字符串是多字节的。

你也可以使用十六进制的转义序列（ '\xn' ) 或者 八进制的转义序列 ( '\n' )。不过要牢记，如果一个字符串包含了十六进制的转义序列或者八进制的，而没有一个 非ASCII码的字面写法 或者 Unicode 风格的编码，那么这些字符串会被直接认定为单字节的。也就是说，默认假定所有的非ASCII字符嗾使以八进制原始字节的形式出现的。

在十六进制和八进制的转义序列中，转义字符可能会出现数字，而这些数字是不合法的十六进制或八进制转义序列。如果字符串的下一个字符是一个数字，那么需要在字符末尾补上一个 '\ '（也就是一个反斜杠加上一个空格，来将编码”矫正“。举个例子， '\xe0\ '表示重音的 'a'。而 '\ '就像前面章节提到过的 反斜杠-新行符；它并不提供什么额外的信息，但是"矫正"了编码。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://emacs-lisp.ivory.cafe/lisp-shu-ju-lei-xing/bian-cheng-lei-xing/2.4.8-zi-fu-chuan-lei-xing/2.4.8.2-zi-fu-chuan-zhong-de-fei-ascii-ma.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
