返回 Bug 清单
BUG-0536project-13中已修复powershell

PowerShell 5.1 默认 GBK 读 UTF-8 无 BOM .ps1 — 中文字面量静默损坏

发现:2026-10-07验证:2026-10-11置信度:70%

症状

脚本跑通但输出的中文字段是乱码;或者更隐蔽 — 中文提示含换行导致脚本行为与预期不一致

根因

Windows PowerShell 5.1(不是 PowerShell 7+)读 .ps1 文件时默认用系统编码 GBK (936)。如果 .ps1 是 UTF-8 无 BOM,PS 5.1 会静默把中文字面量按 GBK 解码 → 脚本里的中文注释/提示语变成乱码甚至损坏相邻行。push-cockpit-data.ps1 被影响,推送 OmniSpace 驾驶舱数据时中文标签字段损坏

修复方案

两种方案:① .ps1 文件保存时加 UTF-8 BOM(首字节 0xEF 0xBB 0xBF)— PS 5.1 看到 BOM 就自动按 UTF-8 读;② 升级到 PowerShell 7+(默认 UTF-8)。教训:任何跨平台 PowerShell 脚本必须 BOM 或显式设置 [Console]::OutputEncoding

错误签名

PS 5.1 [System.Text.Encoding]::Default = GBK (936) 读 UTF-8 无 BOM — 中文乱码或被截断

技术信息

来源项目

project-13

涉及文件

deploy/server/cockpit/push-cockpit-data.ps1

标签

project-13, mcp-reported, source-agent