windows 脚本宿主的当前字符集

Current charset of the windows script host

我使用 Windows 创建 .bat 文件的脚本宿主编写脚本(js 或 vbs,不重要)。

我想使用 ADODB.Stream

将 ANSI 字符串转换为 OEM

我可以使用 Split(CreateObject("WScript.Shell").Exec("cmd /c chcp").StdOut.ReadAll, ":")(1) 获取当前 OEM 代码页,然后使用 http://msdn.microsoft.com/en-us/library/windows/desktop/dd317756%28v=vs.85%29.aspx 将其转换为字符集。

如何获得当前的 ANSI(脚本)字符集?

Windows 代码页可以通过 WMI 确定,方法是读取 Win32_OperatingSystem class 的 CodeSet 属性。

有几种方法可以读取 class 的属性。在批处理脚本中,您将使用命令行可执行文件 wmic:

wmic os get codeset

在 VBScript 中,您可以 shell 输出并使用相同的命令,但是您必须分析文本输出以获得实际值。最好这样做:

Set wmi = GetObject("winmgmts://./root/cimv2")

For Each os In wmi.ExecQuery("SELECT * FROM Win32_OperatingSystem")
  cs = os.CodeSet
Next

WScript.Echo cs