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
我使用 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