奇思妙想 · 2024年 3月 20日 0

各种不同的转义字符

107 次浏览

以目前主流的编程语言来看,\字符作为通用的转义字符。但在编程语言历史上,这并不是唯一选择。

  • 大部分编程语言,用反斜杠\作为转义字符,比如'\n', '\r', '\0'等。
    C/ObjC/C++/Java/C#/Python/Go/Swift/Rust/JS/PHP 等
  • B语言采用*作为转义,例如*n作为new line. 即在B语言中,putchar('*n');代表换行。
  • VB采用了一种稍微不同的做法,没有这种转义字符,采用常数定义或字符数值的方式。
    例如换行符是Chr(10)或者vbLf.
  • SQL语言同样也有转义字符,不过可通过ESCAPE配置,不同SQL语言转义字符有差别,比如有的用两个单引号或两个双引号做转义,有的用反斜杠,具体参照对应SQL语言说明。

有多少种转义字符?

基本转义字符:\a, \b, \n, \r, \f, \t, \v, \0, \', \", \\, \ddd, \xhh
其中:\ddd 是三位八进制,\xhh是两位十六进制。

  • C/ObjC/C++/PHP 支持如上基本转义字符。
  • C# 支持如上基本转义字符,除了\ddd不支持,另外支持\uXXXX,\UXXXXXXXX和\x[XXX]X.
    \u、\U和\x都指代十六进制Unicode字符,\x后面至少一个字节,前三个字节可选。
    • \u后面必须是2个字节十六进制,\U后面必须是4个字节十六进制,\x后面必须符合字符所占用长度,不能特别补零。例如'\x0061'合法,'\x000061'不合法。
  • PHP的$有特殊含义,需要转义"\$"才表达它本身。
  • Kotlin 支持如上基本转义字符,但\a,\0,\v,\f和\ddd、\xhh都不支持,额外支持 \$.
  • 仓颉 不支持\a, \ddd和\xhh, 额外支持\$和\u{XXXX}.

XML的转义字符

  • XML 中"> < &"是特殊标记,数据包含这些字符需要用形如 "&gt;" 表示。如果有大量这种字符,可以用CDATA标记。