You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中实现与JavaScript escape相同的字符串编码?

解决Python实现JavaScript escape()一致结果的问题

JavaScript的escape()函数对非ASCII的BMP(U+0000到U+FFFF)字符会生成%uXXXX格式的字符串,其中XXXX是四位大写十六进制码点。你之前用encode('ascii', 'backslashreplace')得到的是Python风格的\uXXXX字节序列,自然和预期不符,直接手动实现对应逻辑即可:

实现代码

def js_escape(s):
    escaped = []
    for char in s:
        code = ord(char)
        # 处理ASCII字符:保留字母数字及*_+-./,其他转%XX格式
        if code < 128:
            if char in r"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789*_+-./":
                escaped.append(char)
            else:
                escaped.append(f"%{code:02X}")
        # 处理BMP范围内的Unicode字符,转%uXXXX格式
        else:
            escaped.append(f"%u{code:04X}")
    return ''.join(escaped)

测试验证

  • 输入js_escape('가온'),输出%uAC00%uC628,和JavaScript的escape('가온')结果完全一致。
  • 输入js_escape('누리'),输出%uB204%uB9AC,符合你需要的JS风格转义格式。

说明

Python的backslashreplace编码策略是将非ASCII字符转换为Python的转义字符串表示(如\uB204),这和JavaScriptescape()的%uXXXX格式规则不同,所以必须手动实现字符码点的格式化逻辑来匹配JS的行为。

内容的提问来源于stack exchange,提问作者shim robin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 18:30:43