A-A+
execjs执行报错 UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x80 in position 224: illegal multibyte sequence

【注意:此文章为博主原创文章!转载需注意,请带原文链接,至少也要是txt格式!】
最近执行execjs 程序报错,追查了很多原因最终发现是subprocess.py
这个文件导致的,这个文件是execjs这个库里的一个文件,打开方式如果是windows 10 系统中文语言的话,默认使用了gbk方式打开,结果报错。
报错提示如下:
Exception in thread Thread-41:
Traceback (most recent call last):
File "C:\Python\Python39\lib\threading.py", line 954, in _bootstrap_inner
self.run()
File "C:\Python\Python39\lib\threading.py", line 892, in run
self._target(*self._args, **self._kwargs)
File "C:\Python\Python39\lib\subprocess.py", line 1479, in _readerthread
buffer.append(fh.read())
UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 224: illegal multibyte sequence
解决方案其实很简单,换成ExecJs2
这个库就可以了。或者通过下面两个方法也可以。
第一种解决办法(需要修改execjs源码):
根据报错提示,可以知道subprocess.py在1367行报错,进入到subprocess.py中。在文件中搜索: encoding=None,
将 encoding=None修改为encoding="utf-8"
然后再执行程序,可以解决以上问题。
第二种解决办法(不需要修改源码):
import subprocess
from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding="utf-8")
import execjs
在导入 execjs之前写入以上3行代码,也可以解决此问题。
以上参考:https://blog.csdn.net/qq_19309473/article/details/124152048
布施恩德可便相知重
微信扫一扫打赏
支付宝扫一扫打赏