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