Python中execjs执行JS代码出现中文乱码
1、乱码场景
新建 文件code.js,详情如下:
function fun() { return "我是fun函数"; }
在Python中执行此JS代码:
1 import execjs 2 3 # 读取js 4 with open("code.js", encoding="utf8") as f: 5 jsCode = f.read() 6 print(jsCode) 7 8 # 编辑js 9 JS = execjs.compile(jsCode) 10 11 # 执行js代码 12 ret = JS.call("fun") 13 print(ret)
执行结果如下:

2、解决方案
在导入 execjs 模块前,让Popen的encoding参数锁定为utf-8。
1 import subprocess 2 from functools import partial 3 subprocess.Popen = partial(subprocess.Popen, encoding="utf-8")
完整代码如下:
1 # 解决execjs执行js时产生的乱码报错,需要在导入该模块之前,让Popen的encoding参数锁定为utf-8 2 # 不要轻易改源码,可能会影响其他功能。 3 import subprocess 4 from functools import partial 5 subprocess.Popen = partial(subprocess.Popen, encoding="utf-8") 6 7 import execjs 8 9 # 读取js 10 with open("code.js", encoding="utf8") as f: 11 jsCode = f.read() 12 print(jsCode) 13 14 # 编辑js 15 JS = execjs.compile(jsCode) 16 17 # 执行js代码 18 ret = JS.call("fun") 19 print(ret)
执行结果如下:

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)