Como posso determinar manualmente a CodePage e Locale do sistema operacional atual

10

Existe uma maneira que eu manualmente um usuário procurar a página de código atual e localidade de seu sistema operacional Windows? Existe uma configuração de registro que armazena essa informação?

Também seria útil se a técnica funcionasse até o Windows 2000.

    
por epotter 02.11.2009 / 19:50

4 respostas

14

chcp será exibido você a página de código ativa.

systeminfo exibirá a localidade e a entrada do sistema locale, entre outras coisas.

" Observação : Este comando (systeminfo) não está disponível no Windows 2000, mas você ainda pode consultar o computador com Windows 2000 executando este comando no computador com Windows XP ou Windows 2003 e definindo o computador remoto como Windows 2000 Se o logon de usuário atual que executa esse comando já tiver privilégio na máquina remota (por exemplo, Administradores de domínio), você não precisará usar / u e / p. "
De aqui .

    
por 02.11.2009 / 19:56
2

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)
    
por 04.03.2017 / 05:34
1

A localidade também pode ser vista em msinfo32.

    
por 02.11.2009 / 21:01
0

A API do Windows que retorna a página de código ativa é GetConsoleOutputCP () .

    
por 23.12.2016 / 00:26