如何解决python在执行js脚本报CryptoJS is not defined错误
目录
解决 python 在执行 js 脚本报 CryptoJS is not defined 错误
直接在 js 代码加上一行定义 CryptoJS 就行了:
function encrypt(e) { const CryptoJS = require('crypto-js'); var b = "bGVhcm5zcGFjZWFlczEyMw=="; var a = new Base64(); var c = a.decode(b); var f = CryptoJS.enc.Utf8.parse(c); var d = CryptoJS.AES.encrypt(e, f, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); return d.toString() };
下面附上调用 js 脚本的方法:
def encrypt(t): node = execjs.get() ctx = node.compile(open('123.js', encoding='utf-8', ).read()) cnonce = ctx.call('encrypt',t) return cnonce q=encrypt(t)
python 引用 execjs 执行 js 脚本时编码错误
报错:
(UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xad in position 20: illegal )
错误出在 python 内部的 subprocess.py 文件
方法一
在引入 execjs 前加上下面三行代码:
import subprocess from functools import partial subprocess.Popen = partial(subprocess.Popen, encoding="utf-8") # 修改编码方式,window 默认编码是 gbk,Mac 和 Linux 默认是 uft-8 #在前面三行后 import 需要的库 execjs import execjs
方法二
打开 subprocess.py 文件,找到初始化函数__init__()
修改参数的默认值为encoding=‘utf-8’
,程序运行不再报错。
以上就是如何解决 python 在执行 js 脚本报 CryptoJS is not defined 错误的全部内容,更多相关内容请关注码云笔记其他文章
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系maynote@foxmail.com处理
码云笔记 » 如何解决python在执行js脚本报CryptoJS is not defined错误
码云笔记 » 如何解决python在执行js脚本报CryptoJS is not defined错误
![](https://media.mybj123.com/wp-content/uploads/2024/02/1706962282-d2a91681b352c3a.png)