chcp получит Вас активная кодовая страница.
systeminfo отобразит системную локаль и введет локаль, среди прочего.
"Примечание: Эта команда (systeminfo) не доступна в Windows 2000, но Вы можете все еще компьютер окон запроса 2000 путем выполнения этой команды на Windows XP или компьютере Windows 2003 и устанавливать удаленный компьютер на компьютер Windows 2000. Если текущий пользовательский вход в систему, которые выполняют эту команду уже, имеет полномочие на удаленной машине (например, Администраторы домена), Вы не должны использовать/u и/p".
Отсюда.
Обратите внимание, что данная система имеет две активные кодовые страницы, представляющие интерес , как определено устаревшей настройкой под названием язык для не-Unicode программы , ранее известные как локаль системы (справочную информацию см. в нижнем разделе):
Примечание: есть еще две кодовые страницы, но они редко больше не используются и поэтому здесь не обсуждаются: код EBCDIC и кодовая страница (до OS X) Mac - см. документацию WinAPI .
Активную кодовую страницу OEM проще всего получить с помощью chcp
, как показано в полезном ответе Forgotten Semicolon - при условии, что она не была явно изменена в сеансе с chcp
.
Определить активную кодовую страницу 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)
Справочная информация :
Локаль системы - это устаревшее имя для того, что теперь более описательно называется языком для программ, не поддерживающих Unicode (см. терминологию NLS ), и, как следует из названий:
Параметр применяется только к устаревшим программам (программам, которые не не поддерживает Unicode).
It [116792 1] применяет в масштабе всей системы , независимо от настроек локали данного пользователя , и для его изменения требуются права администратора.
Важно отметить, что это устаревший параметр , поскольку кодовые страницы больше не применяются к программам, которые используют Unicode внутри и вызывают Unicode-версии Windows API.
В частности, это определяет активные кодовые страницы , т. Е. Кодировку символов , используемую по умолчанию :
кодовую страницу ANSI для использования, когда не -Программы с Юникодом вызывают версии API Windows, отличные от Юникода (ANSI),в частности, версия ANSI функции TextOut
для преобразования строк в Unicode и из него, которая, в частности, определяет, как строки программы отображаются в графическом интерфейсе .
кодовая страница OEM , чтобы сделать активной по умолчанию в окна консоли , что отражено в chcp
.
65001
, которая представляет кодировку UTF-8 Unicode, является решением, но это может привести к устаревшим программам командной строки неверно интерпретировать данные и даже выйти из строя - подробнее см. этот ответ StackOverflow . 850
, запустите chcp 850
в cmd.exe
и $ OutputEncoding = [console] :: InputEncoding = [console] :: OutputEncoding = [text.encoding] :: GetEncoding (850)
в PowerShell. Несмотря на слово локаль , используемое в устаревшем термине, и слово язык в текущем термине:
Только аспекты, контролируемые настройкой, являются набор активных кодовых страниц и растровые шрифты по умолчанию , а также другие элементы языкового стандарта (которые контролируются настройками языкового стандарта на уровне пользователя).
Данный код страница обычно используется многими языками и охватывает несколько языков; например, широко используемая кодовая страница 1252
используется многими западноевропейскими языками, включая английский.
Однако, когда вы меняете настройку через панель управления, вы выбираете настройка с помощью определенного языкового стандарта.
Список всех кодовых страниц Windows см. на https://docs.microsoft.com/en-us/windows/desktop/Intl / code-page-identifiers