Windows解決cmd/dos窗口中文亂碼問題
CMD/DOS窗口出現(xiàn)中文亂碼及解決方案(以下演示是在Win10系統(tǒng)),本文提供了多種解決方案,總有一款適合你。
一、問題描述
有時候我們在cmd窗口執(zhí)行命令或程序時,會看到cmd窗口出現(xiàn)中文亂碼的問題

這主要是因為cmd窗口默認使用的是GBK編碼,如果命令或程序輸出的內(nèi)容編碼與cmd窗口使用的編碼不一致,就會出現(xiàn)中文亂碼的問題
二、解決方案
解決方案主要有兩大類:
1.更改DOS窗口代碼頁;
2.更改批處理文件編碼;
1. 更改DOS窗口代碼頁
如何查看當前窗口的代碼頁?
方式1:在dos窗口頂部右鍵菜單 > 屬性 > 選項 tab頁 > 當前代碼頁
方式2:在dos窗口輸入chcp命令查看
C:\Users\cyinl>chcp /? 顯示或設(shè)置活動代碼頁編號。 CHCP [nnn] nnn 指定代碼頁編號。 不帶參數(shù)鍵入 CHCP 以顯示活動代碼頁編號。
(部分)代碼頁編號如下:
| 代碼頁 | 描述 |
|---|---|
| 65001 | UTF-8 編碼 |
| 950 | 繁體中文 |
| 936 | 簡體中文 GBK (默認) |
| 437 | MS-DOS 美國英語 |
如何更改dos窗口代碼頁?
更改dos窗口代碼頁又分為多種方式,每種方式各有優(yōu)缺點。
方式1:更改dos窗口代碼頁(臨時有效)
在dos窗口 執(zhí)行chcp 65001更改dos窗口代碼頁
優(yōu)點:切換代碼頁靈活,可以將chcp命令放到bat批處理文件內(nèi),臨時更改控制臺窗口的編碼格式
缺點:僅對當前窗口生效的,其他窗口或新打開的dos窗口仍為默認的936
C:\Users\cyinl>chcp 65001 Active code page: 65001 C:\Users\cyinl>
驗證,執(zhí)行curl www.baidu.com,可以看到中文亂碼問題解決了

方式2:修改注冊表CodePage項(永久有效)
1)win+r 打開運行器,輸入regedit 回車,打開注冊表;
2)在路徑計算機\HKEY_CURRENT_USER\Console\%SystemRoot%_System32_cmd.exe 找到CodePage 項(沒有的話新建一個,DWORD類型);
3)修改CodePage的值為:十進制65001 (對應十六進制:fde9)保存即可
優(yōu)點:一勞永逸
缺點:通過.lnk 快捷方式打開的dos窗口,默認仍是 936(就很奇怪)

對通過Win+R 打開運行,輸入cmd 回車,打開的cmd窗口,進行驗證

對通過文件資源管理器,地址欄輸入cmd 回車,打開的cmd窗口,進行驗證

對雙擊C:\WINDOWS\System32\cmd.exe,打開的cmd窗口,進行驗證

對開始菜單>Windows 系統(tǒng)>命令提示符或搜索>輸入cmd>命令提示符 打開的cmd窗口,進行驗證


對執(zhí)行bat批處理文件打開的cmd窗口,進行驗證
test.bat 測試文件
@echo on chcp pause
雙擊test.bat批處理文件

注:開始菜單或搜索欄里打開的dos窗口,實際上是通過 xxx.lnk 快捷方式打開的
方式3:修改 .lnk 快捷方式的文件屬性(永久有效)
1)找到?C:\Windows\System32\cmd.exe 命令程序;
2)右鍵cmd.exe> 發(fā)送到>桌面快捷方式,創(chuàng)建一個cmd的快捷方式 cmd.exe - 快捷方式.lnk
3)桌面找到cmd的快捷圖標,右鍵 > 屬性 > 快捷方式 > 目標 后邊增加 /K "chcp 65001"(注意跟 cmd.exe 之間有個空格),然后點擊應用即可
優(yōu)點:對 xxx.lnk 打開的dos窗口有效,可以彌補【方式2】注冊表的CodePage 注冊項對 .lnk 快捷方式打開的dos窗口不生效的不足
缺點:僅對修改的快捷方式的打開的dos窗口有效,如果有多個.lnk 快捷方式,需要分別進行修改

回到桌面雙擊cmd.exe - 快捷方式.lnk ,打開dos窗口,驗證效果如下:

從 開始菜單>Windows 系統(tǒng)>命令提示符或搜索>輸入cmd>命令提示符 打開的dos窗口,進行驗證,可以看到未生效

想要開始菜單或搜索里打開的dos窗口也生效,需要修改對應的 .lnk 里的屬性
操作步驟:
1)開始菜單或搜索里找到命令提示符,右鍵 > 打開文件位置
(我這里是C:\Users\cyinl\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\System Tools)
2)找到命令提示符快捷方式,右鍵>屬性>快捷方式>目標 后邊增加 /K "chcp 65001",點擊應用即可

從開始菜單或搜索打開dos窗口,進行驗證,可以看到已生效

方式4:修改注冊表增加AutoRun項(永久有效)
1)win+r 打開運行器,輸入regedit 回車,打開注冊表;
2)在路徑計算機\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor ,右鍵 > 新建 > 字符串值,重命名為AutoRun 項;
3)雙擊AutoRun,編輯數(shù)值數(shù)據(jù)為:chcp 937(注意這里我為了區(qū)分其他方式更改的效果,設(shè)置為了937)
優(yōu)點:一勞永逸,且對所有途徑打開的cmd都生效
缺點:命令行啟動后首行顯示的不再是Windows版權(quán)信息,而是"Active code page: xxx"(好像也不算什么缺點);另外就是對于快捷方式來說【屬性】配置后執(zhí)行于【AutoRun】的配置,后執(zhí)行的會覆蓋先執(zhí)行的(這點應該難理解吧)

對通過Win+R 運行cmd打開的dos窗口進行驗證如下,可以看到 AutoRun配置已生效。
注意:【方式2】修改的注冊表CodePage項,我并沒有去掉,說明 AutoRun 配置覆蓋掉了 CodePage 配置

雙擊桌面的cmd.exe - 快捷方式.lnk 圖標,驗證效果如下,可以看到注冊表里的AutoRun配置已生效,但是緊接著被其他配置給覆蓋了,最終代碼頁顯示為 65001
注意:目前 cmd.exe - 快捷方式.lnk 有3處配置,結(jié)合上邊的 AutoRun 配置會覆蓋 CodePage,可以推測出,這里的 65001 是 快捷方式的【屬性】配置起的作用

把cmd.exe - 快捷方式.lnk屬性里的 /K "chcp 65001" 去掉,然后重新打開dos窗口,驗證上邊的推測,從結(jié)果看 AutoRun 配置最終生效了(嚴格來講是都生效了,只是后執(zhí)行的會覆蓋先執(zhí)行的)

對開始菜單>Windows 系統(tǒng)>命令提示符或搜索>輸入cmd>命令提示符 打開的dos窗口,進行驗證。
注意:對于【開始菜單】或【搜索】打開的命令提示符,共有【方式2】【方式3】【方式4】3個配置,結(jié)合驗證結(jié)果可以看出快捷方式【屬性】配置最終生效了

對執(zhí)行bat批處理文件test,bat,打開的dos窗口,進行驗證。
注意:對于批處理文件,此時只有【方式2】【方式4】兩處配置,可以看出【方式4】的AutoRun配置最終生效了

最后結(jié)論:
配置優(yōu)先級 【快捷方式的屬性】>【注冊表的AutoRun】>【注冊表的CodePage】,即 高優(yōu)先級配置會覆蓋低優(yōu)先級配置(嚴格來講這里說的優(yōu)先級高,只是因為它后執(zhí)行,把先執(zhí)行的效果給覆蓋掉了)
2. 更改批處理文件編碼
通過更改批處理文件的編碼方式,使文件的編碼與DOS窗口的代碼頁對應
方式1:更改批處理文件編碼方式
使用記事本,新建test2.bat批處理文件,內(nèi)容如下,另存為,編碼選擇:ANSI
@echo on echo 中文 pause
雙擊test2.bat批處理文件,執(zhí)行效果如下:

是亂碼沒錯,這是因為在前面演示過程中更改的AutoRun配置將dos窗口代碼頁設(shè)置為了437
到注冊表里把AutoRun項刪掉(這里就不演示怎么刪了),然后再雙擊運行test2.bat

還是亂碼,那就對了,聰明如你應該能想到,注冊表里還有個CodePage 配置,配置的是:十進制 65001(對應 UTF-8),修改為 十進制 936(對應 ANSI/GBK)或刪掉它?。ú灰獑栁以趺床僮??我不會告訴你的!)
我這里改為936(我注冊表里最初配置的就是936,這里相當于復原),再雙擊運行test2.bat,中文亂碼問題解決了

當然,你也可以在批處理文件里,在中文輸出命令之前,使用chcp 更改dos窗口的代碼頁,使其與批處理文件的編碼對應
使用記事本,新建test3.bat批處理文件,內(nèi)容如下,另存為,編碼選擇:ANSI
@echo on chcp 936 echo 中文 pause
雙擊運行test3.bat,進行驗證

如果批處理文件保存時,編碼選擇:UTF-8,那么需要更改dos窗口的代碼頁為:65001,這里就不演示了。
總之就是保持批處理文件本身的編碼方式與DOS窗口代碼頁對應,這樣應該就不會出現(xiàn)亂碼問題了
最后:
如果還有亂碼問題,可以嘗試在DOS窗口的屬性里,改下字體試試。

到此這篇關(guān)于Windows解決cmd/dos窗口中文亂碼問題的文章就介紹到這了,更多相關(guān)cmd/dos窗口中文亂碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
批處理萬年歷實現(xiàn)代碼(包括農(nóng)歷日期)
這篇文章主要介紹了批處理萬年歷實現(xiàn)代碼(包括農(nóng)歷日期),月歷查詢工具 最初發(fā)表于CN-DOS,輸出數(shù)字排序有問題大家可以自行修復一下2020-06-06
無法使用GHOST及避免出現(xiàn)A:\GHOSTERR.TXT的解決方法
昨天我遇到這樣一個問題在一臺聯(lián)想U2240新機上無法用GHOST安裝系統(tǒng),從光盤啟動自動一鍵GHOST11.0到C盤時,圖象出現(xiàn)在還沒進入GHOST11.0 就象死機一樣停在那里不能動了 嘗試過分區(qū);換GHOST8.0一樣無效。將GHOST拷貝到D盤,進入DOS,也還是無法運行GHOST。百般無奈只好用安裝光盤進行安裝了,系統(tǒng)雖然可以成功安裝好,但卻浪費我好多時間。2008-05-05

