编码解码哈希加密格式化时间转换开发生成文本处理网络工具其他工具
首页 / 名词解释 / 转义

转义

在某个语法环境里,有些字符本身带有特殊含义,比如 HTML 里的 <JSON 字符串里的 "正则里的 .。转义(escape)就是用特定写法把这些字符改写成"普通数据",让解析器不再把它当作语法或控制符,而是当作字面内容处理。反过来把转义后的文本还原成原字符,叫"反转义"(unescape)。

常见做法有两类。一是用转义字符(escape character)作前缀,最典型的是反斜杠 \:JSON 里 " 写成 \",换行写成 \n。二是实体/编码替换,比如 HTML 把 < 写成 &lt;、把 & 写成 &amp;。到底用哪种、怎么写,完全取决于当前所处的上下文。

使用时要记住转义规则是"看环境"的,同一个字符在不同上下文规则互不通用:

原则是:数据进入某个上下文的那一刻,按该上下文的规则,只转义一次。

常见问题

转义和编码(encoding)是一回事吗?
概念相近但侧重不同。转义通常指在某套语法里用特殊写法让字符失去特殊含义(如 \" 、&lt;);编码更多指按某规则把字符转成另一种表示(如 URL 百分号编码、Base64)。日常里两词常混用,关键是分清当前上下文该用哪套规则。
为什么字符串里出现了 &amp;lt; 这种乱码?
这是重复转义(double escaping):对已经转义过的文本又转了一次。< 先被转成 &lt;,其中的 & 又被当普通字符转成 &amp;lt;。确保只在输出到目标上下文时转义一次即可。
什么时候必须转义?
当你把含特殊字符或不可信的数据,插入到有语法的环境时,比如拼进 HTML、JSON、SQL、正则或命令行。此时按目标环境的规则转义,能防止 XSS、SQL 注入和语法错误。

相关工具

相关名词