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

UiPath调用PowerShell执行Python脚本出现编码错误:é显示为Ú

UiPath Invoke PowerShell执行Python脚本特殊字符乱码解决方法

问题核心

在UiPath中通过Invoke Power Shell(IsScript设为True)执行python '/path/to/my/script.py',输出字符串出现乱码:系统PowerShell中正常显示Cédric,UiPath中变为CÚdric。

排查确认:

  • 系统PowerShell默认编码为「Western Europe (Windows)」(即Windows-1252),UiPath调用的PowerShell默认编码为「Unicode (UTF-8)」
  • Windows-1252中é的十六进制为E9,CP850编码中E9对应Ú,乱码源于Python输出编码与UiPath侧PowerShell读取编码不匹配

限制条件:

  • 无法使用UiPath的Invoke Python Script活动(功能损坏)
  • 必须保留现有Python脚本
  • 拒绝逐个字符替换的临时方案,需从编码逻辑彻底解决

可行解决方案

方案1:强制Python输出UTF-8编码

Python会自动适配当前控制台编码输出,UiPath的PowerShell环境编码与系统控制台不一致,可强制Python输出UTF-8,匹配UiPath侧编码:

子方案A:修改Python脚本

在Python脚本开头添加代码,强制标准输出使用UTF-8:

import sys
sys.stdout.reconfigure(encoding='utf-8')

子方案B:通过PowerShell环境变量指定

无需修改Python脚本,在Invoke PowerShell的脚本开头添加环境变量设置:

$env:PYTHONIOENCODING="utf-8"
python '/path/to/my/script.py'

PYTHONIOENCODING会强制Python的输入/输出/错误流使用指定编码,确保输出与UiPath侧PowerShell编码匹配。


方案2:调整PowerShell的输入输出编码

将UiPath中PowerShell的编码改为系统控制台一致的Windows-1252,确保读取Python输出时编码匹配:

[Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding(1252)
[Console]::InputEncoding = [System.Text.Encoding]::GetEncoding(1252)
python '/path/to/my/script.py'

1252是Windows-1252的编码ID,设置后PowerShell会以对应编码解析Python输出的字节流。


方案3:UiPath中手动转换编码

若上述方案无效,可直接在UiPath中处理字节数组转编码:

  1. 将Invoke Power Shell活动的Output变量类型改为System.Byte[](默认是字符串,需手动修改)
  2. 添加Assign活动,将字节数组转换为Windows-1252编码的字符串:
    correctString = System.Text.Encoding.GetEncoding(1252).GetString(powerShellOutputBytes)
    
    其中powerShellOutputBytes是Invoke Power Shell的输出变量,correctString为最终正确字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 15:55:28