2015-01-09 3 views
1

Я пишу скрипт (js или vbs, не значимый) с хостом Windows Script, который создает .bat-файл.Текущая кодировка хоста сценариев Windows

Я хочу, чтобы преобразовать ANSI строку в OEM с ADODB.stream

я могу получить текущую кодовую страницу OEM с Split(CreateObject("WScript.Shell").Exec("cmd /c chcp").StdOut.ReadAll, ":")(1), а затем монастырь его кодировку с http://msdn.microsoft.com/en-us/library/windows/desktop/dd317756%28v=vs.85%29.aspx.

Как я могу получить текущую кодировку ANSI (script)?

+0

Зачем вам это нужно? Откуда берется строка «ANSI»? –

+0

Это сценарий автоматического развертывания. Например, в российской среде Windows имела бы OEM-кодировку «CP866» и ANSI charset «windows-1251». windows-1251 - это кодировка самого скрипта. http://en.wikipedia.org/wiki/Windows_code_page Также часть кода автогенерируется с помощью строк UTF8. Мне нужна явная информация о кодировках. – Ezhik

+1

Вы можете проверить код с помощью [WMI] (http://msdn.microsoft.com/en-us/library/aa394239%28v=vs.85%29.aspx), но опять же: почему? Что вы хотите сделать с этой информацией? –

ответ

2

Кодовая страница Windows может быть определена через WMI, считывая свойство CodeSet класса Win32_OperatingSystem.

Существует несколько способов считывания свойств этого класса. В пакетных сценариях вы будете использовать командную строку исполняемого wmic:

wmic os get codeset 

В VBScript можно выложить и использовать ту же команду, но тогда вам придется разобрать вывод текста, чтобы получить фактическое значение. Лучше сделать это таким образом:

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

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

WScript.Echo cs