Jawaban:
chcp akan memberi Anda halaman kode aktif.
systeminfo akan menampilkan lokal sistem dan input lokal, antara lain.
" Catatan : Perintah ini (systeminfo) tidak tersedia di Windows 2000 tetapi Anda masih dapat meminta komputer Windows 2000 dengan menjalankan perintah ini di komputer Windows XP atau Windows 2003 dan mengatur komputer jarak jauh ke komputer Windows 2000. Jika pengguna saat ini log masuk yang menjalankan ini perintah sudah memiliki hak istimewa pada mesin jarak jauh (misalnya, Administrator Domain), Anda tidak harus menggunakan / u dan / p. "
Dari sini .
Perhatikan bahwa sistem yang diberikan memiliki dua halaman kode aktif yang menarik , sebagaimana ditentukan oleh pengaturan lawas bernama bahasa untuk program non-Unicode , yang sebelumnya dikenal sebagai sistem lokal (lihat bagian bawah untuk informasi latar belakang):
Catatan: Ada dua halaman kode lagi , tetapi mereka jarang digunakan lagi, dan karenanya tidak dibahas di sini: kode EBCDIC dan halaman kode Mac (pra-OS X) - lihat dokumentasi WinAPI .
The kode halaman OEM aktif paling mudah diperoleh melalui chcp
, seperti yang ditunjukkan pada jawaban yang membantu Lupa Titik koma ini - dengan asumsi itu tidak secara eksplisit berubah di sesi dengan chcp <codePageNum>
.
Menentukan halaman kode ANSI aktif tidak sesederhana itu, tetapi PowerShell dapat membantu, juga dengan menentukan nama dan bahasa lokal sistem:
Di Windows 8+ / Windows Server 2012+ : Gunakan Get-WinSystemLocale
cmdlet:
Get-WinSystemLocale | Select-Object Name, DisplayName,
@{ n='OEMCP'; e={ $_.TextInfo.OemCodePage } },
@{ n='ACP'; e={ $_.TextInfo.AnsiCodePage } }
Catatan: Mungkin tergoda untuk menggunakan [cultureinfo]::CurrentCulture.TextInfo.ANSICodePage
, misalnya, tetapi ini tidak harus mencerminkan halaman kode ANSI aktif seluruh sistem ; alih-alih, ini adalah halaman kode ANSI yang terkait dengan lokal pengguna saat ini (budaya), yang mungkin berbeda.
Pada sistem AS-Inggris, hasil di atas:
Name DisplayName OEMCP ACP
---- ----------- ----- ---
en-US English (United States) 437 1252
OEMCP
adalah halaman kode OEM, ACP
halaman kode ANSI.
Sebuah metode berbasis registry- yang juga bekerja pada sistem yang lebih tua ke Windows XP :
# Get the code pages:
Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\Nls\CodePage |
Select-Object OEMCP, ACP
Pada sistem AS-Inggris, hasil di atas:
OEMCP ACP
----- ---
437 1252
Jika Anda juga ingin mendapatkan sistem lokal ini [ramah] nama dan LCID (meskipun diketahui bahwa LCIDs yang usang):
[Globalization.CultureInfo]::GetCultureInfo([int] ('0x' + (
Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Nls\Language' Default
).Default)
)
Pada sistem AS-Inggris, hasil di atas:
LCID Name DisplayName
---- ---- -----------
1033 en-US English (United States)
Informasi latar belakang :
Sistem lokal adalah nama lama untuk apa yang sekarang lebih deskriptif disebut bahasa untuk program non-Unicode (lihat terminologi NLS ), dan, seperti namanya:
The Pengaturan hanya berlaku untuk program warisan (program yang tidak mendukung Unicode).
Ini berlaku di seluruh sistem , terlepas dari pengaturan lokal pengguna tertentu , dan hak administratif diperlukan untuk mengubahnya.
Hal ini penting untuk dicatat bahwa adalah merupakan suatu warisan pengaturan , karena halaman kode tidak lagi berlaku untuk program yang menggunakan Unicode internal dan memanggil versi Unicode dari Windows API.
Khususnya, ini menentukan halaman kode aktif , yaitu, pengkodean karakter yang digunakan secara default :
yang halaman kode ANSI untuk digunakan saat program non-Unicode memanggil non-Unicode (ANSI) versi Windows API, terutama versi ANSI dari TextOut
fungsi untuk menerjemahkan string ke dan dari Unicode, yang terutama menentukan bagaimana string program render di GUI .
yang kode halaman OEM untuk membuat aktif secara default di jendela konsol , yang tercermin chcp
.
65001
, yang mewakili pengkodean UTF-8 Unicode, adalah solusi, tetapi itu dapat menyebabkan program baris perintah lama salah menafsirkan data dan bahkan gagal - lihat jawaban StackOverflow ini untuk detailnya.850
, jalankan chcp 850
di cmd.exe
, dan $OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = [text.encoding]::GetEncoding(850)
di PowerShell.Meskipun kata lokal digunakan dalam istilah lama dan kata bahasa dalam istilah saat ini:
Satu- satunya aspek yang dikendalikan oleh pengaturan adalah set halaman kode aktif dan font bitmap default , bukan juga elemen lokal lainnya (yang dikendalikan oleh pengaturan lokal tingkat pengguna).
Halaman kode yang diberikan biasanya dibagikan oleh banyak lokal dan mencakup beberapa bahasa; misalnya, halaman kode yang banyak digunakan1252
digunakan oleh banyak bahasa Eropa Barat, termasuk bahasa Inggris.
Namun, ketika Anda mengubah pengaturan melalui Control Panel, Anda memilih pengaturan dengan cara lokal tertentu.
Untuk daftar semua halaman kode Windows, lihat https://docs.microsoft.com/en-us/windows/desktop/Intl/code-page-identifiers
GetACP()
function - technet.microsoft.com/en-us/dd318070 - itu adalah tautan yang menarik, bagian komentar langsung mengatakan nilai pengembalian fungsi ini TIDAK mewakili bahasa input default yang dipilih pengguna dan bahasa GUI tetapi sesuatu yang sama sekali berbeda ...
Windows API yang mengembalikan halaman kode aktif adalah GetConsoleOutputCP () .
chcp
perintah konsol )
chcp
akan mendapatkan halaman kode OEM aktif . Sebagai mklement menyatakan dalam jawabannya, selalu ada halaman kode aktif lain yang digunakan oleh Windows, halaman kode ANSI. Untuk informasi lebih lanjut lihat jawaban mklement .