Note que um determinado sistema tem duas páginas de códigos ativas , conforme determinado pelo system locale :
- a página de códigos OEM para uso por aplicativos legados console ,
- a página de código "ANSI" para uso por aplicativos legacy GUI .
A página de códigos OEM ativa é mais facilmente obtida por meio de chcp
, conforme mostrado na Resposta útil do Forgotten Semicolon .
Determinar a página de código "ANSI" ativa não é tão simples, mas o PowerShell pode ajudar, também com a determinação do nome da localidade (que não será executado no Windows 2000, mas presumo que não mais uma preocupação).
Windows 8+ / Windows Server 2012 + : use o cmdlet Get-WinSystemLocale
:
Get-WinSystemLocale | Select-Object Name, DisplayName,
@{ n='OEMCP'; e={ $_.TextInfo.OemCodePage } },
@{ n='ACP'; e={ $_.TextInfo.AnsiCodePage } }
Em um sistema em inglês, os rendimentos acima:
Name DisplayName OEMCP ACP
---- ----------- ----- ---
en-US English (United States) 437 1252
OEMCP
é a página de código OEM, ACP
da página de código ANSI.
Windows 7 até o Windows XP : extrair informações do registro :
# Get the code pages:
Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\Nls\CodePage |
Select-Object OEMCP, ACP
Em um sistema em inglês, os rendimentos acima:
OEMCP ACP
----- ---
437 1252
# Get the locale name:
Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\CommonGlobUserSettings\Control Panel\International' |
Select-Object LocaleName, sLanguage, sCountry
Em um sistema em inglês, os rendimentos acima:
LocaleName sLanguage sCountry
---------- --------- --------
en-US ENU United States
Observe como o texto acima não possui uma representação amigável para o idioma.
Você pode usar a seguinte variação para resolver isso:
[Globalization.CultureInfo]::GetCultureInfo((
Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\CommonGlobUserSettings\Control Panel\International'
).LocaleName
).DisplayName
Em um sistema em inglês, os rendimentos acima:
English (United States)