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
(對應(yīng)十六進制: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īng)用
即可
優(yōu)點:對 xxx.lnk 打開的dos窗口有效,可以彌補【方式2】注冊表的CodePage 注冊項對 .lnk 快捷方式打開的dos窗口不生效的不足
缺點:僅對修改的快捷方式的打開的dos窗口有效,如果有多個.lnk 快捷方式,需要分別進行修改
回到桌面雙擊cmd.exe - 快捷方式.lnk
,打開dos窗口,驗證效果如下:
從 開始菜單>Windows 系統(tǒng)>命令提示符
或搜索>輸入cmd>命令提示符
打開的dos窗口,進行驗證,可以看到未生效
想要開始菜單
或搜索
里打開的dos窗口也生效,需要修改對應(yīng)的 .lnk 里的屬性
操作步驟:
1)開始菜單
或搜索
里找到命令提示符
,右鍵
> 打開文件位置
(我這里是C:\Users\cyinl\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\System Tools
)
2)找到命令提示符
快捷方式,右鍵
>屬性
>快捷方式
>目標
后邊增加 /K "chcp 65001",
點擊應(yīng)用
即可
從開始菜單
或搜索
打開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í)行的(這點應(yīng)該難理解吧)
對通過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窗口的代碼頁對應(yīng)
方式1:更改批處理文件編碼方式
使用記事本,新建test2.bat
批處理文件,內(nèi)容如下,另存為,編碼選擇:ANSI
@echo on
echo 中文
pause
雙擊test2.bat
批處理文件,執(zhí)行效果如下:
是亂碼沒錯,這是因為在前面演示過程中更改的AutoRun
配置將dos窗口代碼頁設(shè)置為了437
到注冊表里把AutoRun
項刪掉(這里就不演示怎么刪了),然后再雙擊運行test2.bat
還是亂碼,那就對了,聰明如你應(yīng)該能想到,注冊表里還有個CodePage
配置,配置的是:十進制 65001(對應(yīng) UTF-8),修改為 十進制 936(對應(yīng) ANSI/GBK)或刪掉它?。ú灰獑栁以趺床僮??我不會告訴你的?。?/p>
我這里改為936(我注冊表里最初配置的就是936,這里相當于復(fù)原),再雙擊運行test2.bat
,中文亂碼問題解決了
當然,你也可以在批處理文件里,在中文輸出命令之前,使用chcp 更改dos窗口的代碼頁,使其與批處理文件的編碼對應(yīng)
使用記事本,新建test3.bat
批處理文件,內(nèi)容如下,另存為,編碼選擇:ANSI@echo on chcp 936 echo 中文 pause
雙擊運行
test3.bat
,進行驗證
如果批處理文件保存時,編碼選擇:UTF-8,那么需要更改dos窗口的代碼頁為:65001,這里就不演示了。
總之就是保持批處理文件本身的編碼方式與DOS窗口代碼頁對應(yīng),這樣應(yīng)該就不會出現(xiàn)亂碼問題了文章來源:http://www.zghlxwxcb.cn/news/detail-515760.html
最后:
如果還有亂碼問題,可以嘗試在DOS窗口的屬性里,改下字體試試。文章來源地址http://www.zghlxwxcb.cn/news/detail-515760.html
到了這里,關(guān)于Windows 解決cmd/dos窗口中文亂碼問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!