Respostas:
O chcp vai te dar a página de código ativa.
systeminfo exibirá a localidade do sistema e a localidade de entrada, entre outras coisas.
" Nota : Este comando (informações do sistema) não está disponível no Windows 2000, mas você ainda pode consultar o computador com o Windows 2000 executando este comando no computador com Windows XP ou Windows 2003 e configurar o computador remoto para o computador com o Windows 2000. Se o usuário atual efetuar logon neste O comando já possui privilégios na máquina remota (por exemplo, Administradores de Domínio), você não precisa usar / u e / p. "
A partir daqui .
Observe que um determinado sistema possui duas páginas de códigos ativas de interesse , conforme determinado pela configuração herdada denominada language para programas não-Unicode , anteriormente conhecida como localidade do sistema (consulte a seção inferior para obter informações detalhadas):
Nota: Existem mais duas páginas de código, mas elas raramente são mais usadas e, portanto, não são discutidas aqui: o código EBCDIC e a página de código Mac (anterior ao OS X) - consulte os documentos do WinAPI .
A página de código OEM ativa é mais facilmente obtida via chcp
, conforme mostrado na resposta útil do Forgotten Semicolon - assumindo que não foi explicitamente alterada na sessão com chcp <codePageNum>
.
Determinar a página de código ANSI ativa não é tão simples, mas o PowerShell pode ajudar, também na determinação do nome e idioma do código do idioma do sistema:
No Windows 8+ / Windows Server 2012+ : Use o Get-WinSystemLocale
cmdlet:
Get-WinSystemLocale | Select-Object Name, DisplayName,
@{ n='OEMCP'; e={ $_.TextInfo.OemCodePage } },
@{ n='ACP'; e={ $_.TextInfo.AnsiCodePage } }
Nota: Pode ser tentador usar [cultureinfo]::CurrentCulture.TextInfo.ANSICodePage
, por exemplo, mas isso não reflete necessariamente a página de código ANSI ativa em todo o sistema ; em vez disso, é a página de código ANSI associada à localidade (cultura) do usuário atual , que pode ser diferente.
Em um sistema inglês dos EUA, o acima gera:
Name DisplayName OEMCP ACP
---- ----------- ----- ---
en-US English (United States) 437 1252
OEMCP
é a página de código OEM, ACP
a página de código ANSI.
Um método baseado em registro que também funciona em sistemas mais antigos até o Windows XP :
# Get the code pages:
Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\Nls\CodePage |
Select-Object OEMCP, ACP
Em um sistema inglês dos EUA, o acima gera:
OEMCP ACP
----- ---
437 1252
Se você também deseja obter o nome [amigável] e o LCID da localidade do sistema (observe que os LCIDs estão obsoletos):
[Globalization.CultureInfo]::GetCultureInfo([int] ('0x' + (
Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Nls\Language' Default
).Default)
)
Em um sistema inglês dos EUA, o acima gera:
LCID Name DisplayName
---- ---- -----------
1033 en-US English (United States)
Informações básicas :
Código do idioma do sistema é o nome legado para o que agora é chamado de forma mais descritiva de linguagem para programas não Unicode (consulte a terminologia do NLS ) e, como os nomes sugerem:
A configuração se aplica apenas a programas herdados (programas que não oferecem suporte a Unicode).
Aplica - se a todo o sistema , independentemente das configurações de localidade de um determinado usuário , e são necessários privilégios administrativos para alterá-lo.
É importante observar que essa é uma configuração herdada , porque as páginas de código não se aplicam mais a programas que usam Unicode internamente e chamam as versões Unicode da API do Windows.
Notavelmente, ele determina as páginas de código ativas , ou seja, a codificação de caracteres usada por padrão :
a página de código ANSI a ser usada quando programas não-Unicode chamam as versões não-Unicode (ANSI) da API do Windows, principalmente a versão ANSI da TextOut
função para converter seqüências de caracteres de e para Unicode, que determina notavelmente como as seqüências de caracteres do programa são processadas no GUI .
a página de código OEM para ativar por padrão nas janelas do console , conforme refletido em chcp
.
65001
, que representa a codificação UTF-8 do Unicode, é uma solução, mas que pode fazer com que os programas de linha de comando herdados interpretem mal os dados e até falhem - consulte esta resposta do StackOverflow para obter detalhes.850
, executado chcp 850
em cmd.exe
, e $OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = [text.encoding]::GetEncoding(850)
em PowerShell.Apesar da palavra localidade usada no termo herdado e da palavra idioma no termo atual:
Os únicos aspectos controlados pela configuração são o conjunto de páginas de códigos ativas e as fontes de bitmap padrão , não também outros elementos de um código de idioma (que são controlados pelas configurações de código de idioma no nível do usuário).
Uma determinada página de código é normalmente compartilhada por muitos códigos de idioma e abrange vários idiomas; por exemplo, a página de código amplamente usada1252
é usada por muitos idiomas da Europa Ocidental, incluindo o inglês.
No entanto, quando você altera a configuração pelo Painel de Controle, escolhe a configuração por meio de um código de idioma específico.
Para obter uma lista de todas as páginas de código do Windows, consulte https://docs.microsoft.com/en-us/windows/desktop/Intl/code-page-identifiers
GetACP()
função - technet.microsoft.com/en-us/dd318070 - que é um link interessante, a seção de comentários diz que esse valor de retorno da função NÃO representa o idioma de entrada padrão selecionado e a linguagem GUI do usuário, mas algo completamente diferente ...
A API do Windows que retorna a página de código ativa é GetConsoleOutputCP () .
chcp
comando do console )
chcp
você receberá a página de código OEM ativa . Como mklement afirma em sua resposta, sempre há outra página de código ativa em uso pelo Windows, a página de código ANSI. Para mais informações, consulte a resposta de mklement .