XHTML转JSON后如何替换Unicode转义字符为对应实际字符?
解决JSON中Unicode转义字符替换问题
Python 实现
推荐方案:利用内置JSON模块
Python的json模块会自动处理Unicode转义,无需手动遍历替换:
- 解析带转义的JSON字符串时,
json.loads()会直接将转义字符转换为实际字符:
import json escaped_json_str = '{"content": "Hello\\u2019s World"}' parsed_data = json.loads(escaped_json_str) print(parsed_data["content"]) # 输出: Hello’s World
- 生成JSON字符串时,设置
ensure_ascii=False参数,可避免将非ASCII字符转为Unicode转义:
import json data = {"content": "Hello’s World"} unescaped_json_str = json.dumps(data, ensure_ascii=False) print(unescaped_json_str) # 输出: {"content": "Hello’s World"}
手动替换方案(不推荐)
如果必须手动处理,可通过正则匹配\uXXXX格式的转义符并替换:
import re def replace_unicode_escapes(s): def convert(match): return chr(int(match.group(1), 16)) return re.sub(r'\\u([0-9a-fA-F]{4})', convert, s) escaped_str = "Hello\\u2019s World" print(replace_unicode_escapes(escaped_str)) # 输出: Hello’s World
JavaScript 实现
解析时自动转换
使用JSON.parse()可直接将JSON字符串中的Unicode转义解析为实际字符:
const escapedJsonStr = '{"content": "Hello\\u2019s World"}'; const parsedData = JSON.parse(escapedJsonStr); console.log(parsedData.content); // 输出: Hello’s World
序列化时避免转义
JSON.stringify()默认会转义非ASCII字符,可通过正则替换生成无转义的JSON字符串:
const data = { content: "Hello’s World" }; const unescapedJsonStr = JSON.stringify(data).replace(/\\u([0-9a-fA-F]{4})/g, (_, code) => { return String.fromCharCode(parseInt(code, 16)); }); console.log(unescapedJsonStr); // 输出: {"content": "Hello’s World"}
注意事项
- 优先使用语言内置的JSON处理工具,手动正则替换容易遗漏边界情况(比如转义的反斜杠),导致错误。
- 确保处理后的字符串使用UTF-8编码,避免出现乱码问题。
内容的提问来源于stack exchange,提问作者Tamoor Hamid
相关产品推荐
相关产品推荐

