【发布时间】:2021-03-04 11:33:17
【问题描述】:
在最新版本的 Win10 上,可以将活动代码页 (ACP) 设置为 UTF-8 代码页。 正如here 所讨论的,可以设置系统区域设置(用于在 Windows API 的“A”版本和“W”版本之间进行映射)以使用 UTF-8 代码页。
脚本如何检测 UTF-8 代码页是否正在使用?
正如here 和here 所讨论的,通常可以使用WMI 来获取系统代码页ID:
For Each os In wmi.ExecQuery("SELECT * FROM Win32_OperatingSystem")
cs = os.CodeSet
Next
当我在 Win10 上尝试使用美式英语中的 'beta' utf-8 支持来支持非 unicode 程序时,WMI 继续报告代码页为 1252。即使显然不是这种情况(代码第 1252 页在 128 处有一个代码点,但在 49800 处没有:UTF-8 在 49800 处有一个代码点,在 128 处没有)。
脚本如何检测到实际系统区域设置正在使用 UTF-8 代码页?
【问题讨论】:
-
@Lankymart 这个问题似乎是在询问如何强制 PowerShell 窗口使用 UTF-8。相反,这个问题似乎是在问如何判断本地系统正在使用什么。
-
@TylerH 很公平,但更重要的是事实标记了 powershell 和 vbscript 的问题。答案是纯粹的 powershell 并已被接受为解决方案。
-
几乎所有你可以在 powershell 中做的事情,你可以在 vbscript 中做,反之亦然。大多数 powershell 只是调用 COM 对象,大多数异常都可用于 COM shell 或作为可执行文件,而剩下的少数异常中的大多数都有等价物。下面的答案不是 PowerShell 答案:它是通用答案的 PowerShell 示例。
标签: powershell utf-8 vbscript windows-10 wmi