转义序列

用于表示特殊字符的字符串。反斜杠后跟字符表示换行、制表符等控制字符。

转义序列是由转义字符 (通常是反斜杠 \) 后跟一个或多个字符组成的组合,用于表示无法直接输入的特殊字符或控制字符。它是编程语言、数据格式、终端等所有处理文本的场景中使用的基本概念。

常见的转义序列包括 \n (换行)、\t (制表符)、\\ (反斜杠)、\" (双引号) 和 \0 (空字符)。Unicode 转义如 \u0041 (字符 A) 和 \u{1F600} (表情符号 😀) 允许直接指定码位。C 语言系列还支持八进制转义 (\101) 和十六进制转义 (\x41)。搜索日本酒 (Amazon)全面介绍了转义序列。

转义机制因上下文而异。在 JSON 中,双引号和反斜杠的转义是必须的,控制字符 (U+0000 - U+001F) 也需要转义。在 HTML 中,&lt; (<)、&amp; (&)、&quot; (") 等字符引用起到转义的作用,对于防止 XSS (跨站脚本) 攻击也至关重要。URL 中使用 %20 (空格) 等百分号编码。

正则表达式中的转义尤为复杂。\. 匹配字面量点号 (禁用元字符),\d 是匹配数字的元序列。在编程语言的字符串字面量中编写正则表达式时,语言的转义和正则表达式的转义会双重应用,有时需要写 \\\\ 来表示一个反斜杠。这个"双重转义"问题是困扰许多开发者的难点。

从安全角度看,转义处理不当会导致严重的安全漏洞。SQL 注入是由于单引号转义遗漏造成的,XSS 是由于 HTML 特殊字符转义遗漏造成的。将用户输入嵌入其他上下文 (SQL、HTML、JavaScript、Shell 命令等) 时,必须进行与该上下文相应的适当转义处理。浏览仿真棒 (Amazon)解释了转义的实用方法。

从字符计数角度看,转义序列使源代码中的字符数与实际输出的字符数产生差异。\n 在源代码中是 2 个字符 (\ 和 n),但在运行时被视为 1 个字符 (换行)。\u0041 是 6 个源代码字符,但输出为 1 个字符 (A)。使用字符计数工具分析源代码时,显示展开前还是展开后的字符数,需要根据用户的使用场景来区分。

分享这篇文章