我为具有非ascii字符的PowerShell创建了UTF8脚本。
character.ps1:
Write-Host "ç â ã á à"
在PowerShell控制台中运行脚本时,它将输出错误的字符。
但是,如果我直接在控制台中编写字符,它们将按预期显示:
有谁知道导致这种行为的原因?
问题来自于我编写的脚本,该脚本具有包含非ASCII字符的硬编码路径。当我尝试将路径作为参数传递给cmdlet时(如果我要自动复制一个文件夹),该命令失败,因为它找不到路径(在屏幕上错误输出)。
最佳答案
使用BOM将脚本的编码更改为UTF-8可以解决此问题。
我在将SublimeText与EncodingHelper插件一起使用来控制脚本的字符集。它已正确设置为UTF8。
我将SublimeText中脚本的编码更改为“带BOM的UTF-8”,并且输出正确显示。
我使用Notepad++创建了相同的脚本,默认为“带BOM的UTF-8”,并且该字符串已在控制台中正确显示。
我在Notepad++中将脚本的编码更改为“无BOM的UTF-8”,并且显示不正确。
似乎PowerShell无法正确猜测没有BOM的UTF-8文件的编码。
关于powershell - PowerShell中的UTF8脚本输出不正确的字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14482253/