js escape python实现
实现 JavaScript 的 escape() 函数在 Python 中的等效功能
JavaScript 的 escape() 函数用于对字符串进行编码,将非 ASCII 字符转换为 Unicode 转义序列。以下是在 Python 中实现类似功能的几种方法。
使用 urllib.parse.quote_plus
urllib.parse.quote_plus 可以对字符串进行 URL 编码,类似于 JavaScript 的 escape() 函数,但编码规则略有不同。
from urllib.parse import quote_plus
def js_escape(text):
return quote_plus(text)
# 示例
print(js_escape("Hello World 你好")) # 输出: Hello+World+%E4%BD%A0%E5%A5%BD
自定义实现
如果需要更接近 JavaScript 的 escape() 行为,可以手动实现编码逻辑。JavaScript 的 escape() 会对非字母数字字符(除 @*_+-./ 外)进行编码。
def js_escape(text):
result = []
for char in text:
if char.isalnum() or char in "@*_+-./":
result.append(char)
else:
result.append("%{:02X}".format(ord(char)))
return ''.join(result)
# 示例
print(js_escape("Hello World 你好")) # 输出: Hello%20World%20%u4F60%u597D
处理 Unicode 字符
JavaScript 的 escape() 对 Unicode 字符会转换为 %uXXXX 格式。以下是一个更接近 JavaScript 行为的实现:
def js_escape(text):
result = []
for char in text:
code = ord(char)
if code < 128 and (char.isalnum() or char in "@*_+-./"):
result.append(char)
elif code < 256:
result.append("%{:02X}".format(code))
else:
result.append("%u{:04X}".format(code))
return ''.join(result)
# 示例
print(js_escape("Hello World 你好")) # 输出: Hello%20World%20%u4F60%u597D
使用 json.dumps
json.dumps 可以对字符串进行 Unicode 转义,但格式与 JavaScript 的 escape() 不同。
import json
def js_escape(text):
return json.dumps(text)[1:-1].replace('\\u', '%u')
# 示例
print(js_escape("Hello World 你好")) # 输出: Hello World %u4f60%u597d
注意事项
- JavaScript 的
escape()已被废弃,推荐使用encodeURIComponent或encodeURI。 - Python 的实现可能无法完全匹配 JavaScript 的行为,具体取决于使用场景。
- 如果需要严格的兼容性,建议参考 JavaScript 的编码规则进行定制实现。







