目录

解决Node-Electron下调用Python脚本输出中文乱码的问题

目录

解决Node Electron下调用Python脚本输出中文乱码的问题

博主原博客地址:

调用 Pyinstaller 打包后的可执行文件方式如下:

import { promisify } from 'util'
import { exec } from 'child_process'
import { app } from 'electron'

async handleVerifyZy(id) {
    const entity = await this.findById(id)
    const execPromise = promisify(exec)
    let args = `-a 202501 -c community-sample.json -r resident-sample.json -t ${entity.timestamp}`
    const verifyOutput = await execPromise(
      `verify.exe ${args}`
    )
    // 正常运行结束需要取出结果的excel
    let outputExcelName = join(
      app.getPath('userData'),
      'verify_result',
      `${entity.timestamp}_monthly_zy_analysis_result.xlsx`
    )
    return {
      outputExcelName,
      verifyOutput
    }
  }

打印在渲染层发现标准输出的中文乱码

https://i-blog.csdnimg.cn/direct/87dd5499a48e4d03a1f88ea4858585d1.png

需要修改 Python 脚本,定义全局的 stdout 的编码

# encoding:utf-8
import io
import sys

sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding="utf-8")

打包后再次调用,问题解决

https://i-blog.csdnimg.cn/direct/67a13ec548724483b393a7f9fdcf8f6b.png

参考

1.nodejs调用python输出中文乱码的问题: