execjs编码错误

这是由于js文件中存在非gbk编码的字符(中文或特殊符号),导致subprocess.Popen在默认使用gbk编码的情况下打开文件报错:

UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 134: illegal multibyte sequence

我们只需要使用偏函数(partial)来修改它的默认encoding即可正常使用。

注意!顺序不能错了,必须在修改完成之后再 import execjs 否则会因为闭包导致没改到,继续报错。

import subprocess
from functools import partial

subprocess.Popen = partial(subprocess.Popen, encoding='utf8')
import execjs


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注