随笔 - 1, 文章 - 0, 评论 - 0, 阅读 - 11
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

关于python调用js返回中文的乱码

Posted on   土豆茶子  阅读(11)  评论(0编辑  收藏  举报

JS 测试代码

function test(){
    return "你好,世界!";
}

python 代码

import execjs
def func1():
    # 默认subprocess.Popen的编码与open保持一致,都为 cp936
    with open('./test.js', 'r') as f:
        js_code = f.read()
    js_compiled = execjs.compile(js_code)
    result = js_compiled.call('test')
    print(result.encode('cp936').decode('utf-8'))

方式二 使用functools.partial来修改Popen默认创建文件流的编码格式

import subprocess
from functools import partial

subprocess.Popen = partial(subprocess.Popen, encoding="utf-8")
import execjs

def func2():
    with open('./test.js', 'r',encoding="utf-8") as f:
        js_code = f.read()

    js_compiled = execjs.compile(js_code)
    result = js_compiled.call('test')
    print(result)

这两种方式都可以,方式一不通用,碰到那种解密返回的中文就不行,得用方式二

相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示