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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值