6.4.3 通用字符名
TIP
通用字符名就是 \uXXXX、\UXXXXXXXX 这种写法。它的作用不是“任意字符都能这么转义”,而是在标准允许的位置,用 ISO/IEC 10646 码点精确指定字符。
6.4.3 语法
- 通用字符名有两种形式:
text
\u hex-quad
\U hex-quad hex-quad1
2
2
- 其中
hex-quad表示四个十六进制数字。
6.4.3 约束
通用字符名不得指向下列码点:
D800到DFFF(含)之间的码点;- 大于
10FFFF的码点。
若通用字符名出现在字符常量的
c-char序列或字符串字面量的s-char序列之外,则它还不得指向:- 控制字符;
- 基本字符集中的字符。
IMPORTANT
这意味着你不能把本来就属于基本字符集的字符,随意写成通用字符名来替代源码里的普通写法。
6.4.3 说明与语义
通用字符名可用于标识符、字符常量和字符串字面量,以表示那些不在基本字符集中的字符。
一个通用字符名所表示的字符,就是 ISO/IEC 10646 中码点等于该十六进制值的那个字符。
它描述的是字符身份,不是目标执行编码中的最终字节序列。后续真正如何映射到字面量编码、宽字面量编码等,还要看
6.2.9、6.4.4.5与6.4.5的规则。因而,通用字符名最适合在源码需要稳定表示某个 Unicode 字符,而又不想依赖源文件自身编码时使用。
阅读提示
如果你在看的是标识符规则,那么要和 6.4.2 标识符 一起理解:
- 标识符允许使用某些通用字符名;
- 但这些字符还必须满足
XID_Start/XID_Continue属性与 NFC 规范化要求; - 因此“能写成通用字符名”不等于“就一定能合法用作标识符的一部分”。