这意味着源文件字符集被解码并映射到源字符集。
不,不是那个意思。我的看法是,已经假定源是用源字符集编写的——“将源字符集映射到源字符集”到底有什么意义?他们要么是集合的一部分,要么不是。如果您为源代码选择了错误的编码,它甚至会在预处理开始之前被拒绝。
翻译阶段 1 做了两件与此完全不相关的事情:
解析三元组,它们是标准化的多字节序列。
将多字节字符映射到源字符集(在 5.2.1 中定义)。
源字符集由基本字符集组成,基本字符集本质上是拉丁字母加上各种常用符号 (5.2.1/3),以及扩展字符集,它是特定于语言环境和实现的。
多字节字符的定义见 5.2.1.2:
源字符集可能包含多字节字符,用于表示扩展字符集的成员。执行字符集也可能包含多字节字符,这些字符不必具有与源字符集相同的编码。
表示各种特定于语言环境的古怪特殊情况,例如特定于语言环境的三元组。
所有这些多字节的疯狂都可以追溯到 1990 年的第一次标准化 - 根据该委员会成员的轶事,这是因为来自不同欧洲国家的成员无法在其国家键盘上使用各种符号。
(我不确定当时这种键盘上的AltGr键有多普遍。无论如何,在非英语键盘上写 C 时,它仍然是一个受到严重按钮混搭的键,以访问{}[]符号等。)