Windows中解决execjs的乱码问题

本文讲述了在Windows环境下使用execjs时遇到的乱码问题,源于Popen类默认的GBK编码。提供了两种解决方案:硬改(修改源文件,不推荐)和软改(导入subprocess时指定encoding=utf-8)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Windows中解决execjs的乱码问题

乱码原因:
运行时终端默认使用GBK编码,导致需要使用无法读取utf-8的字符集

问题情形
1.轻则变乱码,如下
2.重则报错:
属性错误:“NoneType”对象没有属性“替换”

2个解决方案:
1.硬改:以前的解决方法,不推荐,尽量不去改源文件里的东西。如下

因为python中连接那个字符的东西在subprocess里面的Popen类.我们找到其源文件,将encoding=None(没设置,默认为GBK),改为encoding='utf-8’即可,我的在763行。

2.推荐,软改

在引入execjs之前,加上这个
一定注意:在引入execjs之前
import subprocess
from functools import partial #用来固定某个参数的固定值
subprocess.Popen=partial(subprocess.Popen,encoding=‘utf-8’)

import requests import execjs import json with open('./node.js','r',encoding='utf-8') as f: js_code=f.read() # 创建一个 JavaScript 执行环境 ctx = execjs.compile(js_code) # 调用 JavaScript 中的函数 result = ctx.call("main111", 1) headers = { 'Accept': 'application/json, text/plain, */*', 'Accept-Language': 'zh-CN,zh;q=0.9', 'Connection': 'keep-alive', 'Content-Type': 'text/xml;charset=UTF-8', 'Origin': 'https://www.ccprec.com', 'Referer': 'https://www.ccprec.com/navCqzr/', 'Sec-Fetch-Dest': 'empty', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Site': 'same-origin', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36', 'sec-ch-ua': '"Not(A:Brand";v="99", "Google Chrome";v="133", "Chromium";v="133"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '"Windows"', } # data = '0064hcbnsq7sl6ihhydch95m6k5t7b664u637k6g6o7l71867s575s6d616j5y7t6y4d797e4x6j998a9y7l5h6973767a7q7n7s7h90746d6p696z5t5l726d515q7l6v5y6q808e8b7n7w91826t7f8k5a6564586b7o7u5a7z7m4f6j5p779d838d737n866u899n8f6j917x7n7z7f7j8k567b694360777d6y7x65646m4b738t828l7c8z7r5r8b746k7a7d537z6k3w68775a7u5o7e7z7v8p6t7u976m72637m5z7z867p9k6l5l6y5z666c7h6e805c5l685c7i927d7n7p6v7g66736v6c717m679489555g7d7j5r6d7i7o6t8v7p9i8d6e628k7d7y6b727z956w6y825d616c635n7l5m6n616e6x5a6k8l5u6d7h6g8w7w7m62724r7b5w4d6e707g7x74716m4u5n60706u6y5y8z6t4c6z7a6b6z7l5y7r5e555y6w7q9g687j6864928n9d7k606k78608y7x6i66805c5y6l635z6l7y6k7k63736o87738d7e7u6a7b7k6379716677585n7o4v6k5m7d8q7i6t9t7t509b8f9h6l7d7o8d5p8j7g6x6f7l5x8m9f76648e5o638x7t8c678r877n877t6f889f5w907p728e695l7u445m5z7d7b7c6p6z6a54717h8o8t685q7r5e5i6b81696u6k6e7x5a5b67775r795n7r6c8n8v8n8t8s6c7n7c518x8e6c6c7n6k5n567q5s6t886c6e705e4q6r7h8s7w7d7m8o7w8a828l646u4t5n7b556y5f7d80566c7n6f7s7i6r856m496h6t5l7i765t6m7g7d766971636t627d5v706t4c7h8d5s6y7n5t6l6n5y7i6e5s605g6f744e5s7v8o9b8b888q4i6g605i7i6s5k62785b5r6y7a6s6e927r7u7i6e7t917b5n666c4e7e7d78826v5v654h616o6p707y7f8s7j6i7b6e6z7l6c7j6g3z64705g7r6i416g7h7p8t9a8l827r7e7j7v847y5l7o7s3x6s7r55667k6x7s645i6p5g557a6f5p6e607i6r6a7j5t6i667e8w7u78726r7b6f6d6a6m6u5q6k855v64606p5n5p5q625y7o7m5a817n4f6o675c7t6x675v6h6k5m757l6n5n7f6p6s5w5n64' response = requests.post('https://www.ccprec.com/honsanCloudAct', headers=headers, data=result).text print(response) decryptCode_data=ctx.call('decryptCode',response) print(decryptCode_data)
03-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值