我已经使用非 ascii 字符为 PowerShell 创建了一个 UTF8 脚本。
字符.ps1:
Write-Host "ç â ã á à"
当脚本在 PowerShell 控制台中运行时,它输出错误的字符。
但是,如果我直接在控制台中写入字符,它们会按预期显示:
有谁知道是什么导致了这种行为?
问题来自我编写的脚本,该脚本具有包含非 ascii 字符的硬编码路径。当我尝试将路径作为参数传递给 cmdlet 时(在我要 robocopy 文件夹的情况下),命令失败,因为它找不到路径(在屏幕中错误输出)。
最佳答案
使用 BOM 将脚本的编码更改为 UTF-8 解决了该问题。
我使用带有 EncodingHelper 插件的 SublimeText 来控制脚本的字符集。它已正确设置为 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/