当前位置: 首页 > news >正文

Python调用外部脚本后的结果乱码问题解决方案

1. 问题

今天我在进行爬虫js逆向的时候,出现了这样一个问题:

2. 解决方案

在文件开头加上以下语句:

import subprocess
from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding="UTF-8")

这段代码的作用是使 subprocess.Popen 在每次被调用时,默认使用 UTF-8 编码。你可以依然调用 subprocess.Popen() 启动新进程,而不需要显式地每次都指定 encoding="UTF-8"

  • subprocess.Popen

    • 这是 Python 标准库 subprocess 模块中的一个类,用于启动新进程(执行系统命令)并与之通信。默认情况下,Popen 可以通过设置 encoding 参数来指定进程的输入和输出使用的字符编码。
  • functools.partial

    • partialfunctools 模块中的一个函数,它的作用是“部分”地应用函数,也就是为一个函数的某些参数设定默认值,返回一个新的函数。
    • 在这里,partial(subprocess.Popen, encoding="UTF-8") 意思是为 subprocess.Popen 设定了一个默认参数 encoding="UTF-8",所以之后每次调用 subprocess.Popen 时,都会自动使用 UTF-8 编码。
  • subprocess.Popen = partial(...)

    • 这行代码将 subprocess.Popen 重新定义为一个新的函数。这个新函数相当于原来的 Popen,但它已经自动包含了 encoding="UTF-8" 参数。因此,任何调用 subprocess.Popen 的地方,如果没有手动指定 encoding,将默认使用 UTF-8 编码。

http://www.mrgr.cn/news/50415.html

相关文章:

  • 2020年下半年软件设计师上午真题及答案解析
  • 力扣hot100--二叉树
  • PHP校园帮一键触达便捷无限小程序系统源码
  • 好用的图片翻译软件有哪些?外贸打工人必备的翻译器分享
  • DeepFM模型预测高潜购买用户
  • TPAMI 2024 | HIRI-ViT:具有高分辨率输入的缩放视觉Transformer
  • 分包与粘包
  • 求13张扑克牌的原顺序
  • Windows系统部署redis自启动服务
  • 【头歌平台实验】【使用Matplotlib模块进行数据可视化】【网络机器人相关法律责任】【网页抓取及信息提取】
  • 如何将 FMEA 应用于实际的产品开发项目中?
  • Spring Boot在中小型医院网站中的应用
  • 【数据处理】大数据入门
  • 自动驾驶系列—自动驾驶中的持续测试(CT):保障软件质量的关键环节
  • sql-labs靶场第十四关测试报告
  • 小心selinux对应用的影响
  • Windows 10/11电脑右键菜单过多清理方法
  • 亚信安慧AntDB数据库基于操作符的隐式转换
  • IDEA下载安装
  • 深入理解UML类图:掌握类与关系的设计奥秘