Respuestas:
chcp te conseguirá la página de códigos activa.
systeminfo mostrará la configuración regional del sistema y la configuración regional de entrada, entre otras cosas.
" Nota : Este comando (systeminfo) no está disponible en Windows 2000, pero aún puede consultar la computadora con Windows 2000 ejecutando este comando en una computadora con Windows XP o Windows 2003 y configurando la computadora remota en la computadora con Windows 2000. Si el usuario actual inicia sesión y ejecuta esto el comando ya tiene privilegios en la máquina remota (por ejemplo, Administradores de dominio), no tiene que usar / u y / p ".
A partir de aquí .
Tenga en cuenta que un sistema determinado tiene dos páginas de códigos activas de interés , según lo determinado por la configuración heredada denominada idioma para los programas que no son Unicode , anteriormente conocidos como configuración regional del sistema (consulte la sección inferior para obtener información de fondo):
Nota: Hay dos páginas de códigos más , pero rara vez se usan más y, por lo tanto, no se analizan aquí: el código EBCDIC y la página de códigos Mac (anterior a OS X) : consulte los documentos de WinAPI .
La página de códigos OEM activa se obtiene más fácilmente a través de chcp
, como se muestra en la útil respuesta de Forgotten Semicolon, suponiendo que no se cambió explícitamente en la sesión con chcp <codePageNum>
.
Determinar la página de códigos ANSI activa no es tan simple, pero PowerShell puede ayudar, también con la determinación del nombre y el idioma de la configuración regional del sistema:
En Windows 8+ / Windows Server 2012+ : use el Get-WinSystemLocale
cmdlet:
Get-WinSystemLocale | Select-Object Name, DisplayName,
@{ n='OEMCP'; e={ $_.TextInfo.OemCodePage } },
@{ n='ACP'; e={ $_.TextInfo.AnsiCodePage } }
Nota: Puede ser tentador usar [cultureinfo]::CurrentCulture.TextInfo.ANSICodePage
, por ejemplo, pero esto no necesariamente refleja la página de códigos ANSI activa en todo el sistema ; en cambio, es la página de códigos ANSI asociada con la configuración regional (cultura) del usuario actual , que puede ser diferente.
En un sistema inglés de EE. UU., Lo anterior produce:
Name DisplayName OEMCP ACP
---- ----------- ----- ---
en-US English (United States) 437 1252
OEMCP
es la página de códigos OEM, ACP
la página de códigos ANSI.
Un método basado en el registro que también funciona en sistemas más antiguos hasta Windows XP :
# Get the code pages:
Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\Nls\CodePage |
Select-Object OEMCP, ACP
En un sistema inglés de EE. UU., Lo anterior produce:
OEMCP ACP
----- ---
437 1252
Si también desea obtener el nombre [amigable] de la configuración regional del sistema y LCID (aunque tenga en cuenta que los LCID están en desuso):
[Globalization.CultureInfo]::GetCultureInfo([int] ('0x' + (
Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Nls\Language' Default
).Default)
)
En un sistema inglés de EE. UU., Lo anterior produce:
LCID Name DisplayName
---- ---- -----------
1033 en-US English (United States)
Información de fondo :
La configuración regional del sistema es el nombre heredado de lo que ahora se llama más descriptivamente lenguaje para programas que no son Unicode (consulte la terminología de NLS ) y, como sugieren los nombres:
La configuración solo se aplica a los programas heredados (programas que no admiten Unicode).
Se aplica en todo el sistema , con independencia de un determinado del usuario las opciones de localización , y se requieren privilegios administrativos para cambiarlo.
Es importante tener en cuenta que es una configuración heredada , porque las páginas de códigos ya no se aplican a los programas que usan Unicode internamente y llaman a las versiones Unicode de la API de Windows.
En particular, determina las páginas de códigos activas , es decir, la codificación de caracteres utilizada por defecto :
la página de códigos ANSI para usar cuando los programas que no son Unicode llaman a las versiones que no son Unicode (ANSI) de la API de Windows, en particular la versión ANSI de la TextOut
función para traducir cadenas hacia y desde Unicode, que determina en particular cómo se procesan las cadenas del programa en el interfaz gráfica de usuario .
la página de códigos OEM para activarse por defecto en las ventanas de la consola , como se refleja en chcp
.
65001
, que representa la codificación UTF-8 de Unicode, es una solución, pero eso puede hacer que los programas de línea de comandos heredados malinterpreten los datos e incluso fallen: consulte esta respuesta de StackOverflow para obtener más detalles.850
, correr chcp 850
en cmd.exe
, y $OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = [text.encoding]::GetEncoding(850)
en PowerShell.A pesar de la palabra locale utilizada en el término heredado y el idioma de la palabra en el término actual:
Los únicos aspectos controlados por la configuración son el conjunto de páginas de códigos activas y las fuentes de mapa de bits predeterminadas , no también otros elementos de una configuración regional (que están controlados por la configuración regional de nivel de usuario).
Una página de códigos determinada generalmente es compartida por muchos entornos locales y cubre varios idiomas; por ejemplo, la página de códigos ampliamente utilizada1252
es utilizada por muchos idiomas de Europa occidental, incluido el inglés.
Sin embargo, cuando cambia la configuración a través del Panel de control, elige la configuración a través de una configuración regional específica.
Para obtener una lista de todas las páginas de códigos de Windows, consulte https://docs.microsoft.com/en-us/windows/desktop/Intl/code-page-identifiers
GetACP()
función - technet.microsoft.com/en-us/dd318070 - ese es un enlace interesante, la sección de comentarios dice directamente que el valor de retorno de esta función NO representa el idioma de entrada predeterminado del usuario y el idioma GUI pero algo completamente diferente ...
La API de Windows que devuelve la página de códigos activa es GetConsoleOutputCP () .
chcp
comando de consola )
chcp
obtendrá la página de códigos OEM activa . Como dice mklement en su respuesta, siempre hay otra página de códigos activa en uso por Windows, la página de códigos ANSI. Para más información ver la respuesta de mklement .