如何修复PowerShell脚本文件中的乱码问题?
问题原因
该问题确实和字符集编码不匹配直接相关:
你看到的�是标准Unicode替换字符,用来标记解码过程中无法识别的无效字节。这个位置原本的内容不是普通半角双引号,是PowerShell ISE等编辑器自动替换生成的智能弯引号(左右配对的排版类双引号),出现乱码的核心场景无外乎两种:
- 同事保存脚本时使用了本地Windows默认的GBK(代码页936)编码,你当前打开脚本的编辑器默认用UTF-8无BOM格式解码,特殊引号对应的字节无法被UTF-8规则识别,就会显示为乱码替换符
- 脚本通过聊天工具、富文本传输通道拷贝时,特殊字符的字节被转码损坏,导致无论用什么编码打开都无法识别原引号
因为脚本本身的逻辑没有问题,所以在同事本地编码匹配的环境下可以正常显示、运行。
修复方案
- 即时修复:直接把代码段里两个乱码的
�替换为英文半角双引号即可,修复后代码如下,可在所有PowerShell环境下正常运行:
catch { Throw "Failed to uninstall $package" }
- 批量修复全脚本同类问题:在你使用的脚本编辑器(VS Code、PowerShell ISE等)中,选择「以指定编码重新打开」,依次尝试
GBK、GB2312、Windows-1252编码,直到所有特殊字符正常显示后,将文件另存为UTF-8 with BOM格式——这是Windows平台PowerShell脚本兼容性最好的编码格式,后续跨设备打开不会再出现同类乱码问题。 - 长期规避:编写PowerShell脚本时尽量使用英文半角引号,关闭输入法的智能标点替换、编辑器的自动弯引号替换功能,从根源避免特殊标点带来的编码兼容问题。
内容的提问来源于stack exchange,提问作者Jason Yu
相关产品推荐
相关产品推荐

