Відповіді:
chcp отримає вам активну кодову сторінку.
systeminfo , серед іншого, відображатиме локальну систему та локальну систему введення.
" Примітка . Ця команда (системна інформація) недоступна в Windows 2000, але ви все одно можете запитувати комп'ютер Windows 2000, виконавши цю команду на комп'ютері Windows XP або Windows 2003 та встановивши віддалений комп'ютер на комп'ютер Windows 2000. Якщо поточний вхід користувача, який виконує це, команда вже має привілей на віддаленій машині (наприклад, Адміністратори домену), вам не доведеться використовувати / u та / p. "
Від сюди .
Зауважте, що дана система має дві активні сторінки коду, що цікавлять , як це визначено застарілим налаштуванням з назвою мови для програм Unicode , раніше відомих як системний локал (див. Нижній розділ для довідкової інформації):
Примітка. Є ще дві кодові сторінки, але вони вже рідко використовуються і тому тут не обговорюються: код EBCDIC та кодова сторінка Mac (до OS X) для Mac - див . Документи 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)
Довідкова інформація :
Системна локаль - це застаріле ім'я для того, що зараз більш описово називається мовою для програм, які не є Unicode (див. Термінологію 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.Незважаючи на локальне слово, яке вживається у попередньому терміні, і мова слова в поточному терміні:
В тільки аспекти , контрольовані установки є набір активних кодових сторінок і по замовчуванням в растрові шрифти , а НЕ також і інші елементи місцевості (які управляються параметрами користувацького рівня локалізації).
Дана сторінка коду, як правило, поділяється багатьма мовами та охоплює кілька мов; наприклад, широко використовувана 1252
кодова сторінка використовується багатьма західноєвропейськими мовами, включаючи англійську.
Однак, коли ви змінюєте налаштування через панель керування, ви вибираєте налаштування за певним місцем.
Список усіх сторінок коду Windows див. На https://docs.microsoft.com/en-us/windows/desktop/Intl/code-page-identifiers
GetACP()
функція - technet.microsoft.com/en-us/dd318070 - що цікаво, посилання в розділі зауважень прямо говорить про те, що значення функції повернення НЕ відображає вибрану користувачем мову вводу за замовчуванням та мову GUI, а щось зовсім інше ...
API Windows, який повертає активну кодову сторінку, є GetConsoleOutputCP () .
chcp
команда консолі )
chcp
ви отримаєте активну кодову сторінку OEM . Як стверджує mklement у своїй відповіді, завжди існує ще одна активна сторінка коду, яку використовує Windows, кодова сторінка ANSI. Для отримання додаткової інформації див відповідь mklement .