字符串转义与反转义
为 JSON 或 JavaScript 字符串、SQL 字符串、CSV 字段、正则表达式或 shell 单词转义文本,或撤销转义。
代码示例
可直接复制到你自己的项目中。每个示例只使用该语言的标准库,因此无需安装任何东西。
const text = 'He said "hi"'
console.log(JSON.stringify(text).slice(1, -1))功能
转义文本,使其可以放进 JSON 或 JavaScript 字符串、SQL 字符串、CSV 字段、正则表达式或 shell 单词中,并可撤销转义。每种格式只转义它所需的字符,不多也不少。
使用方法
- 输入或粘贴文本,或拖入文本文件。
- 选择文本的去向(JSON 字符串、JavaScript 字符串、SQL 字符串、CSV 字段、正则表达式或 Shell 单词),以及转义还是反转义。
- 复制或下载结果,或用将输出作为输入把它变成下一次输入。
示例
转义 He said "it's fine" 和一个换行:
JSON 得到 He said \"it's fine\"\n,SQL 得到 He said "it''s fine",shell 得到 'He said "it'\''s fine"'。
须知
- JSON 和 JavaScript 转义反斜杠、包围字符串的引号、换行和控制字符。反转义会读取
\n、\t、\uXXXX等;JavaScript 还会读取\xHH和\u{…}。 - SQL 把单引号写两次。这对手写的字面量是对的;对于代码,请使用绑定参数。
- CSV 字段只有在包含逗号、引号或换行时才用引号包起来,里面的引号会写两次。
- shell 单词用单引号包起来,其中的单引号写成
'\'',使其中的内容都不被展开。
为什么每种格式的转义方式不同?
每种语法都有自己的特殊字符。JSON 字符串需要转义引号、反斜杠和控制字符。SQL 字符串只需要把单引号写两次。CSV 字段包含逗号、引号或换行时要用引号包起来。正则表达式转义它的运算符,shell 单词用单引号包起来,使其中的内容都不被展开。
常见问题
转义足以阻止 SQL 注入吗?
不能。把引号写两次是本工具展示的做法,对手写查询中的字面量是对的,但不是代码的防御手段。请把值作为绑定参数传入,使它们永远不是 SQL 文本的一部分。
JSON 字符串和 JavaScript 字符串有什么区别?
JSON 只允许少数几种转义,并且总是使用双引号。JavaScript 还允许单引号、\x41,以及两种引号风格下的转义。因此按 JSON 反转义会拒绝 JavaScript 能接受的序列。
这个工具会把我的文本发送到别处吗?
不会。一切都在你的浏览器中进行。你输入的内容不会发送到我们的服务器。