Ответы:
chcp выдаст вам активную кодовую страницу.
systeminfo покажет локаль системы и локаль ввода, среди прочего.
« Примечание . Эта команда (systeminfo) недоступна в Windows 2000, но вы по-прежнему можете запрашивать компьютер под управлением Windows 2000, выполнив эту команду на компьютере под управлением Windows XP или Windows 2003 и установив удаленный компьютер на компьютер под управлением Windows 2000. Если текущий пользователь выполнил вход, выполнивший это команда уже имеет привилегию на удаленном компьютере (например, администраторы домена), вам не нужно использовать / u и / p. "
От сюда .
Обратите внимание, что данная система имеет две активные кодовые страницы, представляющие интерес , что определяется устаревшим параметром с именем language для программ , не поддерживающих Юникод , который ранее назывался языковым стандартом системы (дополнительную информацию см. В нижнем разделе):
Примечание. Есть еще две кодовые страницы, но они редко используются и поэтому здесь не обсуждаются: код EBCDIC и кодовая страница Mac (до OS X) - см. Документацию WinAPI .
Активная кодовая страница OEM наиболее легко получить с помощью chcp
, как показана на полезном ответ Забытых SEMICOLON в - если он не был явно изменен на сессии с chcp <codePageNum>
.
Определить активную кодовую страницу ANSI не так просто, но PowerShell может помочь в определении имени и языка языкового стандарта системы:
В ОС Windows 8+ / Windows Server 2012+ : Используйте Get-WinSystemLocale
команду:
Get-WinSystemLocale | Select-Object Name, DisplayName,
@{ n='OEMCP'; e={ $_.TextInfo.OemCodePage } },
@{ n='ACP'; e={ $_.TextInfo.AnsiCodePage } }
Примечание. [cultureinfo]::CurrentCulture.TextInfo.ANSICodePage
Например, это может быть заманчиво , но это не обязательно отражает общесистемную активную кодовую страницу ANSI; вместо этого это кодовая страница ANSI, связанная с локалью (культурой) текущего пользователя , которая может отличаться.
В американо-английской системе вышеприведенное дает:
Name DisplayName OEMCP ACP
---- ----------- ----- ---
en-US English (United States) 437 1252
OEMCP
кодовая страница OEM, кодовая страница ACP
ANSI.
Метод на основе реестра , который также работает на старых системах вплоть до Windows XP :
# Get the code pages:
Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\Nls\CodePage |
Select-Object OEMCP, ACP
В американо-английской системе вышеприведенное дает:
OEMCP ACP
----- ---
437 1252
Если вы также хотите получить [дружественное] имя и LCID системного языкового стандарта (хотя обратите внимание, что идентификаторы LCID устарели):
[Globalization.CultureInfo]::GetCultureInfo([int] ('0x' + (
Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Nls\Language' Default
).Default)
)
В американо-английской системе вышеприведенное дает:
LCID Name DisplayName
---- ---- -----------
1033 en-US English (United States)
Справочная информация :
Системный языковой стандарт - это устаревшее имя для того, что теперь более описательно называется языком для программ, не поддерживающих Юникод (см. Терминологию NLS ), и, как следует из названий:
Этот параметр применяется только к устаревшим программам (программам, которые не поддерживают Unicode).
Он применяется в масштабе всей системы независимо от настроек локали данного пользователя , и для его изменения требуются права администратора.
Важно отметить, что это устаревший параметр , поскольку кодовые страницы больше не применяются к программам, которые используют Unicode для внутреннего использования и вызывают Unicode-версии Windows API.
В частности, он определяет активные кодовые страницы , то есть кодировку символов, используемую по умолчанию :
кодовая страница ANSI использовать , когда программа не-Unicode называет (ANSI) версию не-Unicode на Windows API , , в частности , версия ANSI из TextOut
функции для перевода строки и из Unicode, которые , в частности определяет , как строки этой программы визуализации в GUI .
кодовая страница OEM сделать активным по умолчанию в консоли окна , как это отражается chcp
.
65001
, которая представляет кодировку UTF-8 Unicode, является решением, но оно может привести к тому, что устаревшие программы командной строки будут неправильно интерпретировать данные и даже потерпеть неудачу - подробности см. в этом ответе StackOverflow .850
, бегите chcp 850
в cmd.exe
, и $OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = [text.encoding]::GetEncoding(850)
в PowerShell.Несмотря на то, что в текущем термине используется слово locale, а в текущем термине слово language :
В только аспекты , контролируемые установки являются набор активных кодовых страниц и по умолчанию в растровые шрифты , а не также и другие элементы местности (которые управляются параметрами пользовательского уровня локализации).
Данная кодовая страница обычно используется многими языками и охватывает несколько языков; Например, широко используемая 1252
кодовая страница используется многими западноевропейскими языками, включая английский.
Однако, когда вы меняете настройку через панель управления, вы выбираете настройку в зависимости от конкретной локали.
Список всех кодовых страниц Windows см. На странице https://docs.microsoft.com/en-us/windows/desktop/Intl/code-page-identifiers.
GetACP()
функция - technet.microsoft.com/en-us/dd318070 - это интересная ссылка, в разделе замечаний прямо говорится, что возвращаемое значение этой функции НЕ представляет выбранный пользователем язык ввода по умолчанию и язык GUI, но что-то совершенно другое ...
Windows API, который возвращает активную кодовую страницу, называется GetConsoleOutputCP () .
chcp
команда)
chcp
виду, что вы получите активную кодовую страницу OEM . Как Макклемент заявляет в своем ответе, всегда есть другая активная кодовая страница, используемая Windows, кодовая страница ANSI. Для получения дополнительной информации см . Ответ mklement .