跳至正文

字符串转义/反转义

用于各种格式字符串特殊字符转义和反转义的工具。数据处理、API开发和前端工作必备!

Examples:

支持的格式

📝 JSON

转义JSON格式的特殊字符。

转义:

  • 换行 → \n
  • 制表符 → \t
  • 引号 → \"
  • 反斜杠 → \\

使用场景:

  • API请求/响应
  • 配置文件
  • 数据存储

🌐 HTML

转义HTML特殊字符以防止XSS攻击。

转义:

  • <&lt;
  • >&gt;
  • &&amp;
  • "&quot;
  • '&#39;

使用场景:

  • 用户输入显示
  • XSS防护
  • HTML生成

🔗 URL

编码特殊字符以确保URL安全传输。

转义:

  • 空格 → %20
  • 中文/特殊字符 → 百分号编码
  • 保留字符 → 编码

使用场景:

  • 查询参数
  • URL生成
  • API端点调用

💻 JavaScript

转义JavaScript字符串的特殊字符。

转义:

  • 换行 → \n
  • 引号 → \'\"
  • 反斜杠 → \\
  • Unicode → \uXXXX

使用场景:

  • 动态脚本生成
  • 模板字面量处理
  • 代码生成

📄 XML

转义XML/HTML格式的特殊字符。

转义:

  • <&lt;
  • >&gt;
  • &&amp;
  • "&quot;
  • '&apos;

使用场景:

  • XML文档生成
  • SOAP API
  • RSS/Atom订阅源

实际示例

显示用户输入

// 防止XSS
const userInput = '<script>alert("XSS")</script>';
const escaped = escapeHTML(userInput);
// 结果: &lt;script&gt;alert(&quot;XSS&quot;)&lt;/script&gt;
document.getElementById('output').textContent = escaped;

API请求

// JSON转义
const data = {
message: '你好\n世界\t!'
};
const jsonString = JSON.stringify(data);
// 结果: {"message":"你好\\n世界\\t!"}

URL查询参数

// URL编码
const searchQuery = '搜索测试';
const encodedQuery = encodeURIComponent(searchQuery);
// 结果: %E6%90%9C%E7%B4%A2%E6%B5%8B%E8%AF%95
const url = `https://api.example.com/search?q=${encodedQuery}`;

动态代码生成

// JavaScript转义
const userMessage = "It's a \"great\" day!";
const code = `console.log('${userMessage.replace(/'/g, "\\'")}');`;
// 结果: console.log('It\'s a \"great\" day!');

使用提示

1. 格式选择

  • JSON: 用于API通信或数据存储
  • HTML: 用于在网页上显示内容
  • URL: 用于查询参数或路径段
  • JavaScript: 用于动态生成代码
  • XML: 用于XML文档或RSS订阅源

2. 何时需要转义

  • ✅ 用户输入显示
  • ✅ API数据传输
  • ✅ 数据库查询生成
  • ✅ URL参数传递
  • ✅ 动态代码生成

3. 何时需要反转义

  • ✅ 处理接收的API数据
  • ✅ 解析查询参数
  • ✅ 恢复存储的数据
  • ✅ 处理URL编码的数据

安全注意事项

防止XSS

显示用户输入时始终转义:

// ❌ 危险
element.innerHTML = userInput;

// ✅ 安全
element.textContent = userInput;
// 或
element.innerHTML = escapeHTML(userInput);

防止SQL注入

使用参数化查询而不是转义:

// ❌ 危险
const query = `SELECT * FROM users WHERE name = '${userInput}'`;

// ✅ 安全
const query = 'SELECT * FROM users WHERE name = ?';
db.execute(query, [userInput]);

注意事项

  • 不同格式需要不同的转义方法
  • 转义 ≠ 编码(不同的概念)
  • 服务器端验证也是必需的
  • 小心双重转义/反转义
  • 使用各语言的内置函数

相关工具