powershell - PowerShell 中的 UTF8 脚本输出不正确的字符

标签 powershell utf-8 character-encoding

我已经使用非 ascii 字符为 PowerShell 创建了一个 UTF8 脚本。

字符.ps1:

Write-Host "ç â ã á à"

当脚本在 PowerShell 控制台中运行时,它输出错误的字符。

enter image description here

但是,如果我直接在控制台中写入字符,它们会按预期显示:

enter image description here

有谁知道是什么导致了这种行为?

问题来自我编写的脚本,该脚本具有包含非 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/

相关文章:

MySQL 导入 UTF-8 字符集的 CSV 没有问题吗?

powershell - 无需BOM将源转换为UTF-8

php - 匹配包含 "XYZ"并且不以冒号开头的单词

JavaScript 正则表达式 - 必须至少包含 UTF-8 中的任意 2 个字母

java - 从 utf8 格式的网站获取内容

character-encoding - PDF框2.0 : Overcoming dictionary key encoding

powershell - 搜索时的文件扩展名

tfs - 如何使用 PowerShell 批量重命名文件?

powershell - 使用 C++ 或同等语言读取和增加文本文件中的数字

PowerShell - 转换日期