首页 > 解决方案 > 在运行和运行选择之间使用 PowerShell 在 Visual Studio Code 的集成终端中出现错误的变音字母

问题描述

我有带有 Windows-1250 编码的 Windows 10,但在带有集成终端的 Visual Studio Code 中,我遇到了变音符号的问题:

在此处输入图像描述

如您所见,同一命令的运行和运行选择之间的编码不同:write-host "Wspólny" 我的 JSON 用户配置为空,我已经尝试了几个小时,但没有解决方案有帮助。我想到处使用 UTF-8。

标签: windowspowershellvisual-studio-code

解决方案


最可能的解释:

  • 您正在运行Windows PowerShell,它根据系统的活动 ANSI 代码页(1250在您的示例中)读取其源代码。

  • 相比之下,Visual Studio Code 默认创建无 BOM 的 UTF-8编码文件。

  • 如果源代码文件(或 Windows PowerShell 读取的任何文本文件,例如 with Get-Content)中没有 BOM,则假定为ANSI编码,因此 UTF-8 文件被误解

    • 具体来说,任何非 ASCII 字符的每个单独字节(在 UTF-8 中总是被编码为多字节序列)然后被解释为 ANSI 字符。

    • 注意:这在 PowerShell (Core) 7+ 中不再是问题,它始终默认为 UTF-8,无论是在读取 BOM-less 文件时还是在写入文件时(BOM-less UTF-8)。

因此,解决方案是将源代码(或您希望 Windows PowerShell 正确读取的任何 UTF-8 文件)保存为带有 BOM的 UTF-8

您还需要对希望在两个版本的 PowerShell 中正确运行的源代码执行此操作。


推荐阅读