2015-01-09 1 views
1

.bat 파일을 만드는 Windows 스크립트 호스트에 스크립트 (js 또는 vbs, 중요하지 않음)를 작성합니다.Windows 스크립트 호스트의 현재 문자 집합

은 내가 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과 캐릭터 세트를 수도원 수 ADODB.Stream

와 OEM을 ANSI 문자열을 변환 할.

어떻게 현재 ANSI (스크립트) 문자셋을 얻을 수 있습니까?

+0

왜 필요한가요? "ANSI"문자열의 출처는 어디입니까? –

+0

자동 배포 시나리오입니다. 예를 들어 러시아어 환경에서 Windows는 OEM charset "CP866"과 ANSI charset "windows-1251"을 갖습니다. windows-1251은 스크립트 자체의 charset입니다. http://en.wikipedia.org/wiki/Windows_code_page 또한 코드의 일부는 UTF8 문자열로 자동 생성됩니다. charsets에 대한 명시적인 정보가 필요합니다. – Ezhik

+1

[WMI] (http://msdn.microsoft.com/en-us/library/aa394239%28v=vs.85%29.aspx)를 통해 코드 세트를 확인할 수 있지만 다시 : 왜? 이 정보로 무엇을하고 싶습니까? –

답변

2

Windows 코드 페이지는 Win32_OperatingSystem 클래스의 CodeSet 속성을 읽고 WMI를 통해 확인할 수 있습니다.

해당 클래스의 속성을 읽는 방법에는 여러 가지가 있습니다. 배치 스크립트에서는 명령 줄 실행 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