execjs执行接js报编码错误的变通解决方法

execjs执行接js报’gbk’编码错误的变通解决方法
baidu后发现,大家一致看法是修改python原文件中的编码,感觉处理过度。思考后决定使用字符串替换思路,比如:将中文字符串生硬的替换为个性化英文字符串(比如:key-123-abc,防止替换错误)

中文替换为对应的url编码

js代码中出现中文,一般都是参数,故此使用url编码替换中文字符串。在python中先将中文字符串转换为URL编码,在js脚本中再使用url解码,示例:

import execjs
# 模拟JS脚本
jstxt = "function getUrl() {var q = decodeURIComponent('%E4%B8%AD%E6%96%87');return 'https://www.baidu.com/s?wd='+encodeURIComponent(q);}"
# exec加载、编译脚本
content = execjs.compile(jstxt)
# 执行脚本的函数
search_url = content.call("getUrl")
print(search_url)

输出:https://www.baidu.com/s?wd=%E4%B8%AD%E6%96%87

你可能感兴趣的:(其他,Python)