Câu trả lời:
chcp sẽ giúp bạn trang mã hoạt động.
systeminfo sẽ hiển thị miền địa phương hệ thống và miền địa phương đầu vào, trong số những thứ khác.
" Lưu ý : Lệnh này (systeminfo) không có sẵn trong Windows 2000 nhưng bạn vẫn có thể truy vấn máy tính Windows 2000 bằng cách chạy lệnh này trên máy tính Windows XP hoặc Windows 2003 và đặt máy tính từ xa thành máy tính Windows 2000. Nếu đăng nhập người dùng hiện tại thực thi điều này lệnh đã có đặc quyền trên máy từ xa (ví dụ: Quản trị viên tên miền), bạn không phải sử dụng / u và / p. "
Từ đây .
Lưu ý rằng một hệ thống nhất định có hai trang mã đang hoạt động , được xác định bởi cài đặt kế thừa ngôn ngữ có tên cho các chương trình không Unicode , trước đây được gọi là ngôn ngữ hệ thống (xem phần dưới cùng để biết thông tin cơ bản):
Lưu ý: Có hai trang mã nữa , nhưng chúng hiếm khi được sử dụng nữa và do đó không được thảo luận ở đây: mã EBCDIC và trang mã Mac (tiền OS X) - xem tài liệu WinAPI .
Các hoạt động trang mã OEM là cách dễ dàng nhất thu được thông qua chcp
, như trong câu trả lời hữu ích Quên chấm phẩy của - giả sử nó không được thay đổi một cách rõ ràng trong phiên với chcp <codePageNum>
.
Xác định trang mã ANSI hoạt động không đơn giản, nhưng PowerShell có thể giúp, cũng như xác định tên và ngôn ngữ của ngôn ngữ hệ thống:
Trong Windows 8+ / Windows Server 2012+ : Sử dụng Get-WinSystemLocale
lệnh ghép ngắn:
Get-WinSystemLocale | Select-Object Name, DisplayName,
@{ n='OEMCP'; e={ $_.TextInfo.OemCodePage } },
@{ n='ACP'; e={ $_.TextInfo.AnsiCodePage } }
Lưu ý: Chẳng hạn, có thể rất hấp dẫn khi sử dụng [cultureinfo]::CurrentCulture.TextInfo.ANSICodePage
, nhưng điều này không nhất thiết phản ánh trang mã ANSI hoạt động trên toàn hệ thống ; thay vào đó, đó là trang mã ANSI được liên kết với ngôn ngữ (văn hóa) hiện tại của người dùng , có thể khác.
Trên hệ thống US-English, các kết quả trên:
Name DisplayName OEMCP ACP
---- ----------- ----- ---
en-US English (United States) 437 1252
OEMCP
là trang mã OEM, ACP
trang mã ANSI.
Một phương pháp dựa trên đăng ký mà cũng hoạt động trên các hệ thống cũ xuống Windows XP :
# Get the code pages:
Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\Nls\CodePage |
Select-Object OEMCP, ACP
Trên hệ thống US-English, các kết quả trên:
OEMCP ACP
----- ---
437 1252
Nếu bạn cũng muốn có được hệ thống locale của [thân thiện] Tên và LCID (mặc dù lưu ý rằng LCIDs đang bị phản đối):
[Globalization.CultureInfo]::GetCultureInfo([int] ('0x' + (
Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Nls\Language' Default
).Default)
)
Trên hệ thống US-English, các kết quả trên:
LCID Name DisplayName
---- ---- -----------
1033 en-US English (United States)
Thông tin cơ bản :
Ngôn ngữ hệ thống là tên kế thừa cho ngôn ngữ được mô tả nhiều hơn bây giờ cho các chương trình không phải là Unicode (xem thuật ngữ NLS ) và, như các tên gợi ý:
Các thiết lập chỉ áp dụng cho các chương trình di sản (chương trình không hỗ trợ Unicode).
Nó áp dụng trên toàn hệ thống , bất kể cài đặt ngôn ngữ của người dùng cụ thể và các đặc quyền quản trị được yêu cầu để thay đổi nó.
Điều quan trọng cần lưu ý đó là là là một di sản thiết lập , bởi vì các trang mã không còn áp dụng cho các chương trình mà sử dụng Unicode trong nội bộ và gọi các phiên bản Unicode của Windows API.
Đáng chú ý, nó xác định các trang mã hoạt động , nghĩa là mã hóa ký tự được sử dụng theo mặc định :
các trang mã ANSI để sử dụng khi chương trình phi Unicode gọi (ANSI) phiên bản phi Unicode của Windows API, đáng chú ý là phiên bản ANSI của TextOut
chức năng để dịch dây đến và đi từ Unicode, trong đó đáng chú ý là xác định cách chuỗi của chương trình render trong các GUI .
các trang mã OEM hiện hoạt theo mặc định trong giao diện điều khiển cửa sổ , như được phản ánh bởi chcp
.
65001
, đại diện cho mã hóa UTF-8 của Unicode, là một giải pháp, nhưng điều đó có thể khiến các chương trình dòng lệnh kế thừa hiểu sai dữ liệu và thậm chí không thành công - xem chi tiết câu trả lời StackOverflow này .850
, chạy chcp 850
trong cmd.exe
, và $OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = [text.encoding]::GetEncoding(850)
trong PowerShell.Mặc dù ngôn ngữ được sử dụng trong thuật ngữ kế thừa và ngôn ngữ từ trong thuật ngữ hiện tại:
Các khía cạnh duy nhất được kiểm soát bởi cài đặt là tập hợp các trang mã hoạt động và phông chữ bitmap mặc định , không phải các yếu tố khác của ngôn ngữ (được điều khiển bởi cài đặt ngôn ngữ cấp độ người dùng).
Một trang mã nhất định thường được chia sẻ bởi nhiều địa phương và bao gồm nhiều ngôn ngữ; ví dụ: trang mã được sử dụng rộng rãi được sử1252
dụng bởi nhiều ngôn ngữ Tây Âu, bao gồm cả tiếng Anh.
Tuy nhiên, khi bạn thay đổi cài đặt qua Bảng điều khiển, bạn chọn cài đặt theo địa điểm cụ thể.
Để biết danh sách tất cả các trang mã Windows, hãy xem https://docs.microsoft.com/en-us/windows/desktop/Intl/code-page-identifier
GetACP()
function - technet.microsoft.com/en-us/dd318070 - đó là liên kết thú vị, phần nhận xét hoàn toàn cho biết giá trị trả về của hàm này KHÔNG đại diện cho ngôn ngữ nhập mặc định và ngôn ngữ GUI được chọn của người dùng mà là một thứ hoàn toàn khác ...
API Windows trả về trang mã hoạt động là GetConsoleOutputCP () .
chcp
lệnh console )
chcp
sẽ giúp bạn có trang mã OEM hoạt động . Như mkuity nêu trong câu trả lời của mình, luôn có một trang mã hoạt động khác được sử dụng bởi Windows, trang mã ANSI. Để biết thêm thông tin, xem câu trả lời của mkuity .