2013-01-01 19 views
52

866 bộ mã được cài đặt theo mặc định trong Windows 'cmd.exe kém và không thuận tiện so với Unicode vinh quang.Làm thế nào để tạo bộ mã Unicode trong cmd.exe theo mặc định?

Tôi có thể cài đặt Unicode theo mặc định hoặc thay thế cmd.exe sang bảng điều khiển khác và đặt mặc định để các lập trình sử dụng nó thay vì cmd.exe?

Tôi hiểu rằng chcp 65001 chỉ thay đổi mã hóa trong bảng điều khiển đang chạy. Tôi muốn thay đổi bộ ký tự ở cấp hệ thống.

+2

866 là một trang mã cho tập lệnh Cyrillic. Thay đổi nó là hoàn toàn chịu trách nhiệm để phá vỡ bất kỳ chương trình chế độ giao diện điều khiển cũ mà hy vọng rằng trang được mặc định. Nó không giống như bạn sẽ không nhận thấy, bạn không thể đọc đầu ra của chương trình nữa. –

+2

Không có điều gì như bộ mã Unicode trong cmd.exe. 'chcp 65001' cung cấp một số giải mã UTF-8 nhưng nó rất thô sơ và không cung cấp đầu vào phù hợp. –

Trả lời

38

Sau khi tôi đã cố gắng giải pháp Algirdas', Windows của tôi bị rơi (Win 7 Pro 64bit) vì vậy tôi quyết định thử một giải pháp khác nhau:

  1. Bắt đầu Run (Win + R)
  2. Loại cmd /K chcp 65001

Bạn sẽ nhận được hầu hết những gì bạn muốn. Để bắt đầu từ thanh tác vụ hoặc bất kỳ nơi nào khác, hãy tạo lối tắt (bạn có thể đặt tên cho nó là cmd.unicode.exe hoặc bất kỳ thứ gì bạn thích) và thay đổi Target thành C:\Windows\System32\cmd.exe /K chcp 65001.

+0

Bạn có nghĩa là "cmd.unicode.bat" không phải "..exe", phải không? Nếu thực sự làm, làm thế nào tôi có thể làm cho tập tin exe giành chiến thắng Win10? – Martin

+0

là nó có thể tự động thêm lệnh đó trong tập tin thực thi không? Tôi có nghĩa là như thế này 'START cmd/K chcp 65001 START DTRé.xls' –

+1

Với codepage 65001, giao diện điều khiển trong Windows 7 (không phải Windows 8+) trả về không chính xác số lượng các điểm mã ký tự được giải mã cho UTF-8 được viết cho nó , thay vì số byte được ghi vào nó, mà 'WriteFile' là * nghĩa vụ * để trả về. Điều này làm cho các ứng dụng thử lại việc viết những gì mà chúng xác định nhầm là phần còn lại của chuỗi byte, liên tục cho đến khi bàn điều khiển trả về tất cả các ký tự 'byte' thực sự được giải mã. Kết quả trông giống như một chuỗi ký tự rác sau mỗi lần in có chứa các ký tự không phải ASCII. – eryksun

6

Save the sau vào một tập tin với ".reg" hậu tố:

Windows Registry Editor Version 5.00 

[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe] 
"CodePage"=dword:0000fde9 

Kích đúp vào tập tin này, và regedit sẽ import nó.

Về cơ bản, nó đặt khóa HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe\CodePage thành 0xfde9 (65001 trong hệ thập phân). tập tin

+4

Vui lòng giải thích chi tiết điều này có nghĩa là gì. Làm thế nào để bạn thiết lập một chìa khóa? OP có thể không biết về regedit. Giải thích điều đó. Cũng giải thích mã fde9 (65001). Cảm ơn. –

+2

Tính năng này hoạt động trên Windows 10 x64 –

+0

Tại sao không lưu trong 'Bảng điều khiển \ Command Prompt'? – Chinggis6

16

Reg

Windows Registry Editor Version 5.00 
[HKEY_CURRENT_USER\Console] 
"CodePage"=dword:fde9 

Command Prompt

REG ADD HKCU\Console /v CodePage /t REG_DWORD /d 0xfde9 

PowerShell

sp -t d HKCU:\Console CodePage 0xfde9 

Cygwin

regtool set /user/Console/CodePage 0xfde9 
+3

Kudo để hiển thị cách đặt giá trị bằng một lớp lót. Lưu ý rằng tất cả chúng đều hỗ trợ đầu vào * thập phân *, vì vậy bạn chỉ có thể sử dụng trực tiếp 65001. – mklement0

12

Mở Command Prompt (chạy cmd với tư cách quản trị viên). truy vấn registry của bạn cho sẵn phông chữ TT ra cửa sổ Console bởi:

REG query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont" 

Bạn sẽ thấy kết quả như sau:

0 REG_SZ Lucida Console 
    00 REG_SZ Consolas 
    936 REG_SZ *新宋体 
    932 REG_SZ *MS ゴシック 

Bây giờ chúng ta cần phải thêm một chữ TT hỗ trợ các ký tự mà bạn cần như Courier New, chúng tôi thực hiện điều này bằng cách thêm số không để tên chuỗi, vì vậy trong trường hợp này người tiếp theo sẽ là "000":

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont" /v 000 /t REG_SZ /d "Courier New" 

Bây giờ chúng ta thực hiện hỗ trợ UTF-8:

REG ADD HKCU\Console /v CodePage /t REG_DWORD /d 65001 /f 

Set mặc định phông chữ để "Courier New":

REG ADD HKCU\Console /v FaceName /t REG_SZ /d "Courier New" /f 

Đặt kích thước phông chữ 20:

REG ADD HKCU\Console /v FontSize /t REG_DWORD /d 20 /f 

Enable nhanh chóng chỉnh sửa nếu bạn thích:

REG ADD HKCU\Console /v QuickEdit /t REG_DWORD /d 1 /f 
+0

Trừ 1: UTF-8 chỉ được hỗ trợ một phần trong cửa sổ bảng điều khiển và chỉ cho đầu ra. –

+0

Đây là một câu trả lời thẳng cho câu hỏi OP: "Làm thế nào để tạo bộ mã Unicode trong cmd.exe theo mặc định?", Với tất cả các bước càng rõ ràng càng tốt, như đã được giải thích bởi Alastair McCormack: "Không có điều gì như bộ mã Unicode trong cmd.exe. chcp 65001 cung cấp một số giải mã UTF-8 nhưng nó rất thô sơ và không cung cấp đầu vào phù hợp. " Vì vậy, tôi không thấy sự cần thiết phải giải thích của Pro & Con của câu trả lời nhất định. –

+0

Trên thực tế, truy vấn 'req' đầu tiên chỉ hiển thị cho tôi các ô vuông trên hàng 3 và 4 – realtebo

Các vấn đề liên quan