1

Тема: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

Где в Windows взять имена текущей Windows и Dos кодировки для егоиспользования в свойстве Charset объекта ADODB.Stream ?
Правилен ли будет такой подход :

Set o = CreateObject("WScript.Shell")
ACP = "Windows-" & o.RegRead("HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage\ACP")
OEMCP = "cp" & o.RegRead("HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage\OEMCP")

?

2

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

GetLocale()
не пойдет ?

Я конечно далек от мысли... (с)

3 (изменено: kefi, 2010-10-21 14:10:23)

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

2 smaharbA> ну что-то совсем далеко от мысли , читайте внимательно -  "для егоиспользования в свойстве Charset объекта ADODB.Stream "

4

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

и что - читайте лучче

Я конечно далек от мысли... (с)

5

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

smaharbA пишет:

и что - читайте лучче

ну не надо издеваться, GetLocale() дает в моей системе число 1049,
а мне надо имя "Windows-1251", а если моя Windows не русская , то ее charset
кроме того нужно получить charset по умолчанию для DosПодWindows.
Конечно. если Вы знаете способ перехода от того, чтоВы предлагаете к тому, что просится, то - пожалуйста покажите, а пока это издевательство.

6

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

Там записаны системные кодировки ANSI и OEM по умолчанию. В интернете пишут, что эти параметры читаются один раз при загрузке и инициализации системы.

Сейчас провёл несколько экспериментов.
1) В WinAPI есть функции GetACP и GetOEMCP для определения системных кодировок. Если эти параметры изменить и перезагрузиться, эти функции начинают возвращать новые значения.
2) Команда chcp в окне командной строки тоже начинает возвращать новое значение, т.е. меняется кодировка консоли.
3) Если в региональных настройках выбрать другой язык для программ, не поддерживающих Юникод, система меняет эти параметры и просит перезагрузиться.

Видимо, на лету системные кодовые страницы не меняются, только через реестр, так что на значения этих параметров можно положиться. Разве что пользователь изменил язык, но отложил перезагрузку, и в этот момент Вы прочитаете уже новые параметры, хотя действуют ещё старые. Думаю, это редкое совпадение.

7 (изменено: kefi, 2010-10-21 16:58:36)

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

2 YMP > Ну, коли все так, то  - сенька бери мяч
Правда, хотел бы уточнить - правильно ли для любой локализации Windows добавлять соответсвующие приставки "Windows-" и "cp", как описано в примере 1 поста ?

8

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

Думаю, что да. Вроде бы это интернациональное обозначение.

9

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

есть еще и  iso и koi и много чего
и они так же могут быть локалью для виндуз

Я конечно далек от мысли... (с)

10

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

Да, в этом случае "Windows-" может оказаться не к месту. Почему-то Stream не принимает обозначения "cp1251", хотя "cp866" кушает спокойно. Где тут логика? Тогда бы проще всё было.

11

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

http://forum.script-coding.com/viewtopi … 607#p11607

12

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

Ну и что? Как, например, из 20866 получить "koi8-r"? Вопрос заключается именно в этом.

13

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

Ага, понятно. Тогда, например, взяв из «HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage» значение «ACP» («OEMCP») перебирать все разделы «HKCR\MIME\Database\Charset\*», пока не попадётся подходящее значение в параметре «InternetEncoding» этого раздела (напишу на PoSH, хоть и криво ):

Get-ItemProperty -Path "Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage" -Name "ACP" | `
    Select-Object -ExpandProperty "ACP" -OutVariable sACP | Out-Null

Get-ItemProperty -Path "Registry::HKEY_CLASSES_ROOT\MIME\Database\Charset\*\" | `
    Where-Object {$_.InternetEncoding -eq $sACP[0]} | `
    Select-Object -ExpandProperty PSChildName
windows-1251

14

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

Get-ItemProperty -Path "Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage" -Name "OEMCP" | `
    Select-Object -ExpandProperty "OEMCP" -OutVariable sOEMP | Out-Null

Get-ItemProperty -Path "Registry::HKEY_CLASSES_ROOT\MIME\Database\Charset\*\" | `
    Where-Object {$_.InternetEncoding -eq $sOEMP[0]} | `
    Select-Object -ExpandProperty PSChildName
ibm866

15

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

На VBScript:

Option Explicit

Const HKEY_CLASSES_ROOT  = &H80000000
Const HKEY_LOCAL_MACHINE = &H80000002

Dim objSWbemServicesEx
Dim objSWbemObjectEx

Dim arrSubKeys
Dim elem
Dim strValue, lngValue


Set objSWbemServicesEx = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default")
Set objSWbemObjectEx = objSWbemServicesEx.Get("StdRegProv")

If objSWbemObjectEx.GetStringValue(HKEY_LOCAL_MACHINE, "SYSTEM\CurrentControlSet\Control\Nls\CodePage", "OEMCP", strValue) = 0 Then
    WScript.Echo "OEMCP:", strValue
    
    If objSWbemObjectEx.EnumKey(HKEY_CLASSES_ROOT, "MIME\Database\Charset", arrSubKeys) = 0 Then
        For Each elem In arrSubKeys
            If objSWbemObjectEx.GetDWORDValue(HKEY_CLASSES_ROOT, "MIME\Database\Charset\" & elem, "InternetEncoding", lngValue) = 0 Then
                If CStr(lngValue) = strValue Then
                    WScript.Echo "Charset:", elem
                End If
            End If
        Next
    End If
End If

Set objSWbemObjectEx   = Nothing
Set objSWbemServicesEx = Nothing

WScript.Quit 0

16

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

Работает, однако.

17

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

Чистое шаманство . Уверенности в правильности самого подхода у меня нет.

18

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

с фреймворком оно реализовано

как то так

imports System.Text

module a
   public sub nain()
    dim c as object
    for each c in Encoding.GetEncodings()
        Console.WriteLine("{0} {1} ", c.CodePage, c.Name)
    next
   end sub
end module
Я конечно далек от мысли... (с)

19

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

alexii пишет:

Чистое шаманство http://forum.script-coding.com/img/smilies/wink.png. Уверенности в правильности самого подхода у меня нет.

По поводу приведенного подхода : а ведь там еще в веточках MIME\Database\Charset\ есть такие , где нет ключа InternetEncoding . Вот не знаю только , если нет этого ключа , то обязателено ли дожен быть ключ AliasForCharset и как-то можно или вообще нужно ли его использовать ?
Т.е. например :
HKEY_CLASSES_ROOT\Mime\Database\Charset\iso_8859-1:1987 \AliasForCharset = iso-8859-1
Что является алиасом, а что именем charset :  iso_8859-1:1987 или iso-8859-1 имя, которое можно использовать  в  Stream.Charset ?

И еще : я так понимаю - все же GetLocale() (например, =1049 ) - нельзя использовать для нахождения требующегося ?

20

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

kefi пишет:

?

http://img.ii4.ru/images/2010/10/24/63170_f1.jpg

21

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

2 Poltergeyst > а причем тут эта лиса ?

22 (изменено: alexii, 2010-10-25 08:44:39)

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

Может проще создать таблицу соответствия ?
Code Page Identifiers (Windows)

Я конечно далек от мысли... (с)

23

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

smaharbA пишет:

Может проще создать таблицу соответствия ?

И так в приведенных выше примерах используется таблица - прямиком из реестра, зачем в программу жестко зашивать ее клона ?
И еще : я так понимаю - все же GetLocale() (например, =1049 ) - нельзя использовать для нахождения требующегося ?

24

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

«GetLocale()» возвращает установленную локаль, изначально берущуюся из:

HKEY_USERS\.DEFAULT\Control Panel\International\Locale

(а, может, из HKCU), одно из:

HKEY_CLASSES_ROOT\MIME\Database\Rfc1766\

не более того.

Кодировка же может быть в принципе любой. Где искать для локали по умолчанию:

HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage\ACP … OEMCP

Вы уже упомянули в первом же посте темы. Я нашёл относительное подтверждение, что это правильный подход (только для скриптов, разумеется) в KB153449, KB199819, KB304614, KB867677. Переход от найденного значения «ACP»/«OEMCP» к «Charset» в посте #15. Или что-то ещё нужно? Потому как вопрос:

я так понимаю - все же GetLocale() (например, =1049 ) - нельзя использовать для нахождения требующегося ?

не понятен, ибо, начиная перекодировку в «ADODB.Stream», нужно в любом случае заранее знать кодировку исходного текста.

25

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

Я попробовал слепить простой код с WinAPI GetACP(), GetOEMCP() и посмотреть, дёргают ли они реестр, но увы — не дёргают; очевидно сие происходит только при загрузке системы. Впрочем, описание функций GetCPInfo()/GetCPInfoEx() уж настолько явно выглядит как вышеозвученные параметры реестра, что меня почти убедило:

GetCPInfo пишет:


CodePage
[in] Identifier for the code page for which to retrieve information. The application can specify the code page identifier for any installed or available code page, or one of the following predefined values. See Code Page Identifiers for a list of identifiers for ANSI and other code pages.
Value : Meaning
CP_ACP : Use the system default ANSI code page.
CP_MACCP : Windows NT/2000/XP: Use the system default Macintosh code page.
CP_OEMCP : Use the system default OEM code page.

26

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

allexii> Или что-то ещё нужно? Потому как вопрос:
я так понимаю - все же GetLocale() (например, =1049 ) - нельзя использовать для нахождения требующегося ?
не понятен,
>
Вопрос то возник исключительно благодаря провокации smaharbA во втором посте, я и подумал, что может Locale однозначно определяет кодировку Windows ...
Вот только Касательно Вашего VBS примера получения кодировок - тормозно они работат , лучше б побыстрее - может, реестр шерстить как-то быстрее возможно ? .

27

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

kefi пишет:

allexii

Лучше пользуйтесь цитированием .

kefi пишет:

Вот только Касательно Вашего VBS примера получения кодировок - тормозно они работат , лучше б побыстрее - может, реестр шерстить как-то быстрее возможно ? .

У меня сие занимает не более полусекунды. Реестр, правда, на свежеустановленной ОС пока практически пустой:

wmic.exe registry get CurrentSize
CurrentSize
4

И даже пока не фрагментированный (во всяком случае, «C:\WINDOWS\system32\config\system»), судя по «PageDefrag».

28 (изменено: kefi, 2010-10-27 17:28:26)

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

alexii пишет:

У меня сие занимает не более полусекунды. Реестр, правда, на свежеустановленной ОС пока практически пустой:

Я секунды не считал, наверно, - тоже как-то так, но на глаз это заметно, а если в цикле, - тогда вобще...
Вот ,как оказалось, если Ваш вариант преобразолвать как-то так, то гораздо скорее получается (раз в 10 скорее, а может больше):

Public Function GetCharsetNameOnNlsCP(CP)
Const HKEY_CLASSES_ROOT = &H80000000, HKEY_LOCAL_MACHINE = &H80000002
Dim objSWbemServicesEx, objSWbemObjectEx, arrSubKeys, elem, strValue, lngValue, i, sh
Set sh = CreateObject("WScript.Shell")
GetCharsetNameOnNlsCP = ""
If CP = "" Then CP = "ACP"
CP = Split(CP, ",")

Set objSWbemServicesEx = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default")
Set objSWbemObjectEx = objSWbemServicesEx.get("StdRegProv")

With objSWbemObjectEx
If .EnumKey(HKEY_CLASSES_ROOT, "MIME\Database\Charset", arrSubKeys) = 0 Then
 For i = 0 To UBound(CP)
 If .GetStringValue(HKEY_LOCAL_MACHINE, "SYSTEM\CurrentControlSet\Control\Nls\CodePage", CP(i), strValue) = 0 Then 'OEMCP ACP
   On Error Resume Next
   For Each elem In arrSubKeys
    'If .GetDWORDValue(HKEY_CLASSES_ROOT, "MIME\Database\Charset\" & elem, "InternetEncoding", lngValue) = 0 Then ' Ниже побыстрее будет
    lngValue = sh.RegRead("HKCR\Mime\Database\Charset\" & elem & "\InternetEncoding") ' м.б. - Не удается открыть для чтения раздел реестра
    If Err.Number = 0 Then
     If CStr(lngValue) = strValue Then
      If GetCharsetNameOnNlsCP <> "" Then elem = "," & elem
      GetCharsetNameOnNlsCP = GetCharsetNameOnNlsCP & elem: Exit For
     End If
    End If
    Err.Clear
   Next
 End If
 Next
End If
End With

End Function ' GetCurrentCharsetName -->>

PS. Кстати, - зачем заботиться от убивстве объектов в конце - ведь VBS сам это делает при выходе из процедуры ?

29

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

kefi пишет:

Я секунды не считал, наверно, - тоже как-то так, но на глаз это заметно

Незачем считать. Достаточно добавить:

WScript.Echo Timer

до и после, затем сравнить. Запустил на машине с давно установленной и весьма потрудившейся ОС:

67252.17
OEMCP: 866
Charset: ibm866
67252.45

Чему там тормозить-то? У Вас случайно KAV/KIS не стоит?!

kefi пишет:

а если в цикле, - тогда вобще...

В каком цикле? В таком?

Option Explicit

Dim elem

WScript.Echo Timer

WScript.Echo GetCharsetNameOnNlsCP(Array("OEMCP", "ACP"))

WScript.Echo Timer

WScript.Quit 0

Function GetCharsetNameOnNlsCP(arrCodePages)
    Const HKEY_CLASSES_ROOT  = &H80000000
    Const HKEY_LOCAL_MACHINE = &H80000002
    
    Dim objSWbemServicesEx
    Dim objSWbemObjectEx
    
    Dim arrSubKeys
    Dim elem, elem2
    Dim strValue, lngValue
    Dim strOut
    
    Set objSWbemServicesEx = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default")
    Set objSWbemObjectEx = objSWbemServicesEx.Get("StdRegProv")
    
    strOut = ""
    
    For Each elem In arrCodePages
        If objSWbemObjectEx.GetStringValue(HKEY_LOCAL_MACHINE, "SYSTEM\CurrentControlSet\Control\Nls\CodePage", elem, strValue) = 0 Then
            'WScript.Echo elem, strValue
            
            If objSWbemObjectEx.EnumKey(HKEY_CLASSES_ROOT, "MIME\Database\Charset", arrSubKeys) = 0 Then
                For Each elem2 In arrSubKeys
                    If objSWbemObjectEx.GetDWORDValue(HKEY_CLASSES_ROOT, "MIME\Database\Charset\" & elem2, "InternetEncoding", lngValue) = 0 Then
                        If CStr(lngValue) = strValue Then
                            'WScript.Echo "Charset:", elem2
                            strOut = strOut & elem2 & vbCrLf
                        End If
                    End If
                Next
            End If
        End If
    Next
    
    Set objSWbemObjectEx   = Nothing
    Set objSWbemServicesEx = Nothing
    
    GetCharsetNameOnNlsCP = strOut
End Function

Опять-таки, не вижу тормозов:

73044.2
ibm866
windows-1251

73044.75

30

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

2 alexii > ну да - так и уменя(пол секунды), но на глаз это заметно, при отладке даже нервирует, поэтому и пришлось малость корректировать Ваш вариант , получилось, если точнее, - первый запуск в цикле  0,3 сек, остальные по 0,1 сек.

31

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

kefi пишет:

PS. Кстати, - зачем заботиться от убивстве объектов в конце - ведь VBS сам это делает при выходе из процедуры ?

Сила привычки, оставшаяся от C. В основном, предпочитаю заботиться об этом сам. Отчасти ещё и потому, что любой код может стать частью какого-либо другого, более объёмного кода.

kefi пишет:

так и уменя(пол секунды), но на глаз это заметно,

OFF: Завидую Вашим глазам .

32

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

Хотелось бы до кучи, чтобы кто-нибудь толково разъяснил отличие кодового набора от кодовой страницы.

Вот в реестре Windows, как выше говорилось, есть три  ветки :

HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage\
HKCR\Mime\Database\Charset\
HKCR\Mime\Database\Codepage\

первая дает вроде как кодовые страницы - числа, куча чисел ( ACP = 1251, OEMACP = 866 у меня ).
вторая - названия кодовых наборов (charset) или их алиасов . В этой ветке для кодовых наборов также указана кодовая страница codepage и InternetEncoding (InternetEncoding - что это?).
третья  - вот что дает, не понимаю.

Вот , Скажем, во второй ветке для charset : 
utf-7 - InternetEncoding=65000,  utf-8 -> InternetEncoding=65001, а codepage у них один - 1200.
Кроме того, для ключей 65000 и 65001 в третьей вышеописанной ветке реестра есть параметр Family , который = 1200 для обоих.

так где тут кодовая страница? Может кто-ни распутаться с этими тремя соснами ?

33 (изменено: jite, 2010-11-27 11:33:29)

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

так где тут кодовая страница? Может кто-ни распутаться с этими тремя соснами ?

Исключительно, чтобы окончательно все запутать - "тысячи их".
Там же выше упоминается ключик HKEY_CURRENT_USER\Control Panel\International\Locale (="00000409" -> 16-чное 0x409 = 10-чное 1049), изменение значения которого в реестре мгновенно отзывается на результате GetLocale. Но, повторяюсь, это путь великого реестрового запутывания.

А вот чтобы разобраться, начинаем с основ, смотрим стандарты, а также читаем мнение MS по этому поводу.

34 (изменено: kefi, 2010-11-27 15:14:19)

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

2 jite>
Основы читаны уже давно и не раз и про локаль и про кодепэйдж и про кодовый набор, но при всем при том я не могу врубиться в различия между codepage и кодовым набором(charset), и , если они зависят от locale, то, конечно, хочется понять и эту зависимость.
Простыми, но ясными словами можно это объяснить с примером ?
Потому как в голове пока создалось такое представление, что :
1 ) кодовый набор и кодовая страница - это одно и тоже (если кто может, пусть пример приведет обратного) и
2 ) локаль есть независимая от первых двух величина.

35

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

Основы читаны уже давно и не раз и про локаль и про кодепэйдж и про кодовый набор, но при всем при том я не могу врубиться в различия между codepage и кодовым набором(charset), и , если они зависят от locale, то, конечно, хочется понять и эту зависимость.

Что-то видимо не там читали, раз непонятно. Вот, например, в статье Языковые стандарты и кодовые страницы все ясно английским/русским языком написано (рекомендую зайти в Предпочтения сверху-справа и выбрать классический стиль отображения, чтобы видеть en/ru).
Таким образом, набор символов (charset) это просто набор буковок безотносительно языка и кодов (ABCD...), кодовая страница (code page) - сопоставление некоторых буковок с некоторыми кодами (Я-239, ...), а языковой стандарт или локаль (locale) - это сочетание языка, кодовой страницы и местных настроек сортировки, представления даты-времени, валют и пр.

С другой стороны, грань между charset и codepage "вдали от теории", в дебрях документации вечно спешащих разработчиков - она там часто просто отсутствует.

36 (изменено: kefi, 2010-11-27 16:49:57)

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

2 jite > ну не светлеет ,
вот нельзя ли ответить на простые конкретные вопросы, по моему примеру см выше для utf-7 и utf-8 ?
- utf-7 и utf-8 получаются наборы имволов , или все же кодовыве страницы ?
- а 1200 - это что тогда ?
- а InternetEncoding=65000,  InternetEncoding=65001 - это что ?

(ЗЫ. Здесь вообще пишут http://msdn.microsoft.com/ru-ru/library/2x8et5ee.aspx: A code page is a character set  Ну т.е. как Вы говорите грань отсутствует)

37 (изменено: jite, 2010-11-28 13:03:39)

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

[Лирическая страничка маньяка-исследователя]

kefi пишет:

ну не светлеет ,
вот нельзя ли ответить на простые конкретные вопросы, по моему примеру см выше для utf-7 и utf-8?
- utf-7 и utf-8 получаются наборы имволов , или все же кодовыве страницы ?
- а 1200 - это что тогда ?
- а InternetEncoding=65000,  InternetEncoding=65001 - это что ?

Да-да, я тоже возмущен! И почему никто на этом форуме (несомненно являющемся негласным отделением Microsoft) не берется ответить на такие простые вопросы как, например:
- за что отвечает вот этот вот конкретный ключ в реестре?
- почему это в ветке кодовых наборов находятся названия стандартов кодирования, а в разделе кодовых страниц - какие-то циферки?! Ведь это же совершенно непонятно и нелогично!

(И под влиянием нездоровых эмоций бросаюсь на амбразуру отвечать на дурацкие вопросы со всей серьезностью. )

Еще раз, другими словами: "Это реестр, детка". MS не обязаны сообщать в деталях о внутренностях своей ОС. А все что они-таки сочли нужным сообщить, можно узнать используя магическое сочетание STFW. Или проводить собственные исследования.

Часто логика и назначение значений известна лишь разработчикам. Соответственно, utf-7 и utf-8 в реестре это такие подключи (привет от кэпа). А в мире это ни наборы символов, ни кодовые страницы, а подвиды unicode, у которого кодовых страниц нет в принципе, ну или, если так можно выразиться, есть одна единственная, но не суть... Может не стоит искать логику там, где ее может и не быть?

Капитан Очевидность также сообщает, что InternetEncoding - это идентификатор метода определения кодировки интернет-контента, а судя по наличию его в ключах типа charset\_autodetect, сей метод вероятно завязан на логику некоего конкретного приложения (а не браузер IE ли это, предположит внимательный читатель), что ставит под сомнение целесообразность использования данного идентификатора для определения характеристик какой либо из локалей ОС.

Чего еще не ответил?.. Ах, да! 1200 - думаю, это просто такое красивое круглое число. Вот! По мнению MS оно как-то связано с unicode, а по мнению Руслана Петренко из Украины, оно связано с IE, который уже в свою очередь связан с MS, которые, как мы уже знаем, известно что думают. Как ни странно, я склоняюсь ко мнению последнего, не пренебрегая впрочем мнением первых. А с учетом того, что это число также связано с InternetEncoding, для нас оно интереса скорей всего не представляет.

Все не так уж важно (с) Мумий Тролль о значении внутренних значений реестра Windows, предположительно.

[/Лирическая страничка маньяка-исследователя]

alexii упоминал про функции WinAPI32, но не сообщил о возвращаемых значениях. Для полноты картины восполняю пробел примером на jscript с использованием DynamicWrapperX

var DX = new ActiveXObject("DynamicWrapperX");
DX.Register("Kernel32.dll", "GetACP", "r=u");
WScript.Echo(DX.GetACP()); //возвращает 1251
//UINT GetOEMCP(void);
DX.Register("Kernel32.dll", "GetOEMCP", "r=u");
WScript.Echo(DX.GetOEMCP()); //возвращает 866

38

Re: VBS: Где в Windows взять имена текущей Windows и Dos кодировки ?

Да-да, я тоже возмущен! И почему никто на этом форуме (несомненно являющемся негласным отделением Microsoft)

почему "тоже" и почему сразу "является отделением MS" - ветка же по VBS, что не логичного в посте здесь?  я вовсе не возмущен. за ответ спасибо.

off > зы. а что у вас с кэп'ом связано, просто непонятно выражаетесь как-то ?