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

PowerShell SSH连接服务器执行命令输出乱码 配置UTF8无效如何解决

PowerShell通过SSH执行远程命令输出乱码修复

乱码具体出现在Similarity与->之后的文本位置,本质原因不是编码配置错误,而是远程命令输出携带的ANSI彩色格式控制序列,本地PowerShell无法正常解析导致的,仅配置UTF8编码无法解决这类问题。

方案1:从源头禁用远程输出的彩色格式(优先推荐,无额外处理成本)

  • 调用SSH时加-T参数禁用伪终端分配,绝大多数命令行程序检测到非交互式终端环境时,会自动关闭彩色、格式类控制字符输出:
ssh -T <远程用户名>@<远程服务器地址> "<需要执行的远程命令>"
  • 如果加-T参数后仍有彩色输出,执行远程命令前先设置TERM=dumb环境变量,强制终端下所有程序不输出格式控制符:
ssh <远程用户名>@<远程服务器地址> "export TERM=dumb; <需要执行的远程命令>"

方案2:本地过滤输出内容中的ANSI控制序列

如果需要保留交互式终端能力、不能直接禁用彩色输出,可以在接收到SSH返回内容后,用正则把所有ANSI格式控制符删掉,保留纯文本内容。
保留原有UTF8编码配置的基础上,增加过滤逻辑即可:

# 原有UTF8编码配置保留
$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding

# 执行SSH命令获取原始输出
$rawResult = ssh <远程用户名>@<远程服务器地址> "<需要执行的远程命令>"
# 正则匹配移除所有ANSI彩色/光标/格式控制序列
$cleanResult = $rawResult -replace '\x1B\[[0-9;]*[a-zA-Z]', ''
# 输出清理后的无乱码内容
$cleanResult

方案3:升级PowerShell原生支持ANSI格式

如果使用的是Windows自带的旧版PowerShell 5.1,其本身对ANSI转义序列的支持存在缺陷,升级到PowerShell 7及以上版本后,可原生解析ANSI彩色控制符,既不会出现乱码,还能正常保留远程输出的彩色效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:18:14