7. Strings (字符串)
字符串的表示类似于C语言系列编程语言中使用的约定。字符串以引号开始和结束。所有Unicode字符都可以放在引号内,除了必须转义的字符: 引号、反斜杠和控制字符(U+0000到U+001F)。
任何字符都可以被转义。如果字符在基本多文种平面 (Basic Multilingual Plane, BMP)(U+0000到U+FFFF)中,则可以表示为六字符序列: 反斜杠,后跟小写字母u,再后跟编码该字符码点的四个十六进制数字。十六进制字母A到F可以是大写或小写。因此,例如,仅包含单个反斜杠字符的字符串可以表示为"\u005C"。
或者,有一些常用字符的双字符序列转义表示。因此,例如,仅包含单个反斜杠字符的字符串可以更紧凑地表示为"\\"。
要转义不在基本多文种平面中的扩展字符,该字符表示为12字符序列,编码UTF-16代理对 (Surrogate Pair)。因此,例如,仅包含G谱号字符(U+1D11E)的字符串可以表示为"\uD834\uDD1E"。
string = quotation-mark *char quotation-mark
char = unescaped /
escape (
%x22 / ; " 引号 U+0022
%x5C / ; \ 反斜杠 U+005C
%x2F / ; / 斜杠 U+002F
%x62 / ; b 退格 U+0008
%x66 / ; f 换页 U+000C
%x6E / ; n 换行 U+000A
%x72 / ; r 回车 U+000D
%x74 / ; t 制表符 U+0009
%x75 4HEXDIG ) ; uXXXX U+XXXX
escape = %x5C ; \
quotation-mark = %x22 ; "
unescaped = %x20-21 / %x23-5B / %x5D-10FFFF