You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过任务计划程序运行Python脚本时JSON文件出现乱码问题

解决Windows Server 2016任务计划运行Python脚本乱码问题

核心原因分析

你遇到的问题确实和Windows任务计划的区域/编码设置差异直接相关:用户登录时,任务使用当前用户的区域编码配置;而选择“无论用户是否登录都运行”时,任务会调用系统级默认编码,两者不一致就会触发字符处理异常。此外,脚本未明确指定编码、Python环境不统一也可能导致偶发乱码。

具体解决方案

1. 强制Python脚本使用UTF-8编码读写

在脚本中明确指定编码,彻底脱离系统默认编码的干扰:

  • 写入JSON文件时:
    import json
    # 明确指定utf-8编码,ensure_ascii=False保留非ASCII字符格式
    with open("result.json", "w", encoding="utf-8") as f:
        json.dump(api_response_data, f, ensure_ascii=False, indent=2)
    
  • 调用API获取响应时,强制指定响应编码:
    import requests
    response = requests.get("your_api_url")
    # 强制设置响应编码为utf-8(可根据API实际返回编码调整)
    response.encoding = "utf-8"
    api_response_data = response.json()
    

2. 统一任务计划的编码环境

修改任务计划的执行命令,先切换到UTF-8编码再运行脚本:

  1. 打开任务计划程序,找到目标任务,右键选择属性
  2. 切换到操作选项卡,点击编辑
  3. 在“程序或脚本”中填入cmd,在“添加参数(可选)”中填入:
    /c "chcp 65001 && C:\full\path\to\your\python.exe C:\full\path\to\your\script.py"
    
    其中chcp 65001是将命令行环境切换为UTF-8编码,后面需跟上完整的Python路径和脚本路径。

3. 统一系统与用户的区域编码

  1. 按Win+R输入intl.cpl打开区域设置
  2. 切换到管理选项卡,点击更改系统区域设置
  3. 勾选Beta版:使用Unicode UTF-8提供全球语言支持,重启服务器

    注意:此设置会影响系统全局程序的编码,建议先在测试环境验证后再应用到生产服务器。

4. 确保Python环境一致性

任务计划中使用的Python路径必须和你登录RDP时运行的Python完全一致:

  • 登录服务器后,在命令行输入where python获取完整路径
  • 在任务计划的操作中,将“程序或脚本”设置为该完整路径(比如C:\Python310\python.exe),避免调用系统默认的不同版本Python。

5. 避免文件写入不完整导致的乱码

采用“先写临时文件,再替换目标文件”的方式,防止半写入的文件被读取:

import json
import os

temp_file = "result.tmp.json"
target_file = "result.json"

# 写入临时文件
with open(temp_file, "w", encoding="utf-8") as f:
    json.dump(api_response_data, f, ensure_ascii=False)

# 原子替换目标文件
os.replace(temp_file, target_file)

内容的提问来源于stack exchange,提问作者ltuandy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 12:12:43