解决execjs gbk编码错误

article/2025/9/11 1:09:28

解决execjs subprocess中报错,UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xaf in position 1527: illegal multibyte sequence

问题描述

如果使用execjs执行含有中文的js文件,将会报错gbk无法解码文件的问题

报错如图所示:

image-20230622183210108

解决办法

在需要引入execjs的文件的最前面加入如下代码,继承原有subprocess.Popen,修改其默认encoding为utf-8:

class MySubprocessPopen(subprocess.Popen):def __init__(self, *args, **kwargs):kwargs['encoding'] = "UTF-8"super().__init__(*args, **kwargs)subprocess.Popen = MySubprocessPopen
os.environ["EXECJS_RUNTIME"] = "Node"import execjs

接下来就可以正常使用execjs库了

注意!!一定要在import execjs之前加入以上代码才有效


http://chatgpt.dhexx.cn/article/RDjbiqEC.shtml

相关文章

Python 使用execjs调用网页js 进行数据加密

最近做一个数据采集项目的时候需要自动采集网站的招投标数据 ,随便打开一个网站 打开开发者模式,输入关键词,点击搜索,获得以下内容 可以看到请求链接和请求类型,请求类型Content-Type:是application/x-www-form-urle…

execjs的学习

execjs的学习 1.基本使用 pip install pyExecJs #安装模块 apt-get install nodejs # execjs模块基于node运行的,(此方式是在Linux中使用 windows请安装node包)import execjs js""" // 函数 function getnow(){var timestampnew Date()…

python3调用js的库之execjs

针对现在大部分的网站都是使用js加密,js加载的,并不能直接抓取出来,这时候就不得不适用一些三方类库来执行js语句 执行JS的类库:execjs,PyV8,selenium,node 这里主要讲一下execjs,一…

java基础知识复习(上半)

java基础知识复习 java为什么被发明? Green项目的确立,应用于像电视盒一样的消费类电子产品,语言本身本身中立。java的三大版本? javaSE的定位在于客户端,只要用于桌面应用软件的编程。 javaME的定位在于嵌入式系统…

go学习笔记接口部分

Go学习笔记 接口接口定义方法练习 11.1 simple_interface.go:练习 11.2 interfaces_poly2.go: 接口嵌套接口如何判断接口类型方法一varI.(T)方法二type-switch练习 11.4 simple_interface2.go: 测试一个值是否实现了某个接口接口方法设计的注…

多设备monkey测试工具_基于Tkinter GUI操作

V1.0版本 先看下效果吧: 简单的介绍下: 1.设备列表区域:用于展示当前连接的所有设备 2.monkey参数区域:用于显示即将执行的monkey参数 3.日志区域:用于显示必要日志(其实没啥卵用,就是看着高…

Python日常小技巧(持续更新中)

目录 快速定位元组内容对字典进行排序json的获取(dumps,dump,loads,load)查找字典中相同的key统计列表中元素的个数字典按输入顺序输出历史记录的存储对有多个分割符的字符串进行分割对文件中的时间格式进行转换 字符串的居中,左右对齐列表并行/串行计算字符串判断是…

Flink 学习三 Flink 流 process function API

Flink 学习三 Flink 流&process function API 1.Flink 多流操作 1.1.split 分流 (deprecated) 把一个数据流根据数据分成多个数据流 1.2 版本后移除 1.2.分流操作 (使用侧流输出) public class _02_SplitStream {public static void main(String[] args) throws Excep…

基于Unity3D实现的牙医病人小游戏【100011407】

1 总体设计 1)基本技术路线 运用面向对象的设计理念,设计了病人类,牙医类,候诊椅类,诊疗椅类等,通过对这些类的封装,创立各个类的对象,并调用类的成员函数。 2)总体结…

Java IO,BIO、NIO、AIO

操作系统中的 I/O 以上是 Java 对操作系统的各种 IO 模型的封装,【文件的输入、输出】在文件处理时,其实依赖操作系统层面的 IO 操作实现的。【把磁盘的数据读到内存种】操作系统中的 IO 有 5 种: 阻塞、 非阻塞、【轮询】 异步、 IO复…

TensorFlow2.0学习笔记-3.模型训练

3.模型训练 3.1.Keras版本模型训练 • 构建模型(顺序模型、函数式模型、子类模型) • 模型训练: model.fit() • 模型验证: model.evaluate() • 模型预测: model.predict() • 使用样本加权和类别加权 回调函数 •…

sql注入学习

提示:萌新学习路程的记录型文章,有错误的地方欢迎大佬们指正。 文章目录 前言一、SQLi-Labs1、SQLi-Labs下载、安装(环境搭建)(1) 首先下载解压并移动sqli-labs(2) 找到sql-connections下的db-creds.inc进行修改(3) 打开网页:http…

从客户端中检测到有潜在危险的 request.form值[解决方法]

当页面编辑或运行提交时,出现“从客户端中检测到有潜在危险的request.form值”问题,该怎么办呢?如下图所示: 下面博主汇总出现这种错误的几种解决方法:问题原因:由于在asp.net中,Request提交时出现有html代码或javascript等字符串时,程序系统会认为其具有潜在危险的值。…

sadadas

dasdasdasdasdasd

python_day3_集合与运算/文件读写、修改详解/字符编码转换/函数和函数式编程(return/参数详解/局部变量与全局变量/递归/高阶函数)

Python_集合与运算/文件读写、修改详解/字符编码详解/函数和函数式编程/函数式编程之参数/局部变量与全局变量/递归/高阶函数 在这里得感谢&#xff0c;老师Alex金角大王(路飞学城IT) Python(给兄弟们挂个&#x1f517;) >_<…因为有的是自己理解&#xff0c;如有错误&a…

svn添加新项目的步骤

1.服务端给一个地址&#xff1a;拉取代码 2.上传代码&#xff08;不含没有module的build文件夹和以下文件夹&#xff09;

项目新添加页面svn上传

你项目当中新添加了页面上传SVN&#xff0c;需要先把新添加的页面Add到SVN上&#xff0c; 右击新添加的页面出现TortoiseSVN — Add&#xff0c;然后上传整个项目就可以了&#xff0c;SVN上就有新添加的页面了。 如下图

Eclipse用SVN上传新项目

首先右击项目–>team --> share project 选择repository为svn–>点击next 使用已有的资源库的位置&#xff0c;如下图所示&#xff1a; 使用项目名称作为文件夹名 --> 点击Finish --> 输入用户名和密码(此步不一定每个人都有)&#xff0c;如下图所示&#xff1a…

IDEA添加新项目到SVN

1.打开IDEA &#xff0c;上面工具栏选择VCS 选择把项目交给SVN管理 2.选择SVN 3、右键项目选择如下 4.点击绿色的号&#xff0c;选择一个SVN仓库的地址&#xff0c;下面可以选择上传到SVN仓库的目录格式&#xff0c;然后点击Share 5.默认1.8 6.右键项目选择-->Subversion--…

项目上传到SVN

步骤1、首先在服务器上安装svn。 步骤2、然后找到svn 选择VisualSVN Server Manager 在Repositories下新建Repository name 步骤3、在MyEclipse中右击项目&#xff0c;Team–>Share Project–>SVN–>创建新的资源位置或使用已有的资源位置&#xff08;最好新建&#…