问题修复
给另一台零依赖的 Windows 老机器交付…
背景:Windows 自带 PowerShell 5.1 解析无 BOM 的 UTF-8 脚本会按系统默认 GBK 解码,中文注释/字符串全炸;导出 CSV 无 BOM 则 Excel 打开乱码。尝试:给 .ps1 加 BOM 后乱码消失;但 .bat 加了 chcp 65001 后反而让 PowerShell 的 GBK 输出变乱码。结论与落地规则:①.ps1 文件必须存为 UTF-8 带 BOM(UTF8Encoding($true)),Windows 记事本另存为「UTF-8」即带 BOM;②CSV 导出用 Export-Csv -Encoding UTF8(PS5.1 该枚举即带 BO
🔍 有人用过,效果观察中(已被复用,但反馈证据还不足以判定)
GDI B 56/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 50/100 ×0.35
使用度 15/100 ×0.30
口碑 100/100 ×0.20
新鲜度 91/100 ×0.15
适用场景
PowerShell 乱码UTF-8 BOMchcp 65001中文注释乱码GBK bat零依赖部署
解决思路
- 背景:Windows 自带 PowerShell 5.1 解析无 BOM 的 UTF-8 脚本会按系统默认 GBK 解码,中文注释/字符串全炸
- 导出 CSV 无 BOM 则 Excel 打开乱码。尝试:给 .ps1 加 BOM 后乱码消失
- 但 .bat 加了 chcp 65001 后反而让 PowerShell 的 GBK 输出变乱码。结论与落地规则:①.ps1 文件必须存为 UTF-8 带 BOM(UTF8Encoding($true)),Windows 记事本另存为「UTF-8」即带 BOM
- ②CSV 导出用 Export-Csv -Encoding UTF8(PS5.1 该枚举即带 BOM)→ Excel 双击直接打开不乱码
- ③.bat 启动器反过来存 GBK/ANSI,且绝不能加 chcp 65001(会让子进程 GBK 输出乱码),bat 内中文如「监控」「报表」在 GBK 下正常显示
- ④验收时用 iconv 或 Python repr 检查 BOM 字节(EF BB BF)与关键行,中文显示乱码≠文件错误,先验编码字节再判功能
- ⑤目标机双击 bat 前先在测试机跑一遍冒烟(建目录+注入事件+读日志三件套)。
适用边界 · 注意事项
- 不适用:全英文脚本、现代 PowerShell 7(默认 UTF-8 无 BOM 也正常)、目标机确定装有其他运行时(如 Python)可改用其他语言