Namespaces
Variants

Character sets and encodings

From cppreference.net

目录

基本字符集

基本字符集 由以下 95 个字符组成:

码点 字符 字形
U+0009 字符制表符
U+000B 行制表符
U+000C 换页符 (FF)
U+0020 空格
U+0021 感叹号 !
U+0022 引号 "
U+0023 数字符号 #
U+0025 百分号 %
U+0026 和号 &
U+0027 撇号 '
U+0028 左圆括号 (
U+0029 右圆括号 )
U+002A 星号 *
U+002B 加号 +
U+002C 逗号 ,
U+002D 连字符减号 -
U+002E 句点 .
U+002F 斜线 /
U+0030 .. U+0039 数字零 .. 九 0 1 2 3 4 5 6 7 8 9
U+003A 冒号 :
U+003B 分号 ;
U+003C 小于号 <
U+003D 等号 =
U+003E 大于号 >
U+003F 问号 ?
U+0041 .. U+005A 拉丁大写字母 A .. Z A B C D E F G H I J K L M

N O P Q R S T U V W X Y Z

U+005B 左方括号 [
U+005C 反斜线 \
U+005D 右方括号 ]
U+005E 抑扬符 ^
U+005F 下划线 _
U+0061 .. U+007A 拉丁小写字母 a .. z a b c d e f g h i j k l m

n o p q r s t u v w x y z

U+007B 左花括号 {
U+007C 竖线 |
U+007D 右花括号 }
U+007E 波浪号 ~

与C++不同,U+000A 换行符(LF)并不包含在基础字符集中。相反,应有某种方式指示源文件中每行文本的结束,且文档会将此类行尾指示符视为单个换行字符。

基本字符集也被称为 基本源字符集

基本执行字符集

基础执行字符集 包含基础字符集的所有成员,以及以下字符:

码元 字符
U+0000 空字符
U+0007 响铃
U+0008 退格
U+000A 换行 (LF)
U+000D 回车 (CR)

对于每个基本执行字符集,其成员的值应为非负数且彼此互异。在源字符集和执行基本字符集中,上述十进制数字列表中0之后的每个字符值应比前一个字符的值大1。U+0000空字符的值为0。

基本执行字符集中每个成员的表示形式都能容纳在一个字节中。

在C++中,基本执行字符集也被称为 基本字面字符集 基本执行宽字符集

字面值编码

字面量编码 是一种实现定义的映射,它将执行字符集中的字符映射到无编码前缀的 字符常量 字符串字面量 中的值。该编码支持将所有基本执行字符集的值映射到实现定义的编码中,且可能包含多字节字符序列。

以下字符不属于基本执行字符集,但要求在普通字符常量或普通字符串字面量中编码为单字节。

码点 字符名称 字形
U+0024 Dollar Sign $
U+0040 Commercial At @
U+0060 Grave Accent `
(since C23)

宽字面编码是一种实现定义的映射,将执行字符集中的字符映射到以 L 为前缀的字符常量或字符串字面值中的值。它支持将所有基本执行字符集值映射到实现定义的编码中。如果实现未定义 __STDC_MB_MIGHT_NEQ_WC__ ,则对于所有基本执行字符集值,该映射产生的值与字面编码完全相同。一个或多个值可以映射到扩展执行字符集的一个或多个值。

UTF-8编码用于将执行字符集的字符映射到带 u8 前缀的 字符常量或 (since C23) 字符串字面量。

实现定义的编码 (until C23) UTF-16编码 (since C23) 用于将执行字符集的字符映射到带 u 前缀的字符常量或字符串字面量。

实现定义的编码 (until C23) UTF-32编码 (since C23) 用于将执行字符集的字符映射到带 U 前缀的字符常量或字符串字面量。

(since C11)

参见

ASCII 码表
C++ 文档 关于 字符集与编码