Windows解決cmd/dos窗口中文亂碼問(wèn)題
CMD/DOS窗口出現(xiàn)中文亂碼及解決方案(以下演示是在Win10系統(tǒng)),本文提供了多種解決方案,總有一款適合你。
一、問(wèn)題描述
有時(shí)候我們?cè)赾md窗口執(zhí)行命令或程序時(shí),會(huì)看到cmd窗口出現(xiàn)中文亂碼的問(wèn)題
這主要是因?yàn)閏md窗口默認(rèn)使用的是GBK編碼,如果命令或程序輸出的內(nèi)容編碼與cmd窗口使用的編碼不一致,就會(huì)出現(xiàn)中文亂碼的問(wèn)題
二、解決方案
解決方案主要有兩大類:
1.更改DOS窗口代碼頁(yè);
2.更改批處理文件編碼;
1. 更改DOS窗口代碼頁(yè)
如何查看當(dāng)前窗口的代碼頁(yè)?
方式1:在dos窗口頂部右鍵菜單
> 屬性
> 選項(xiàng)
tab頁(yè) > 當(dāng)前代碼頁(yè)
方式2:在dos窗口輸入chcp
命令查看
C:\Users\cyinl>chcp /? 顯示或設(shè)置活動(dòng)代碼頁(yè)編號(hào)。 CHCP [nnn] nnn 指定代碼頁(yè)編號(hào)。 不帶參數(shù)鍵入 CHCP 以顯示活動(dòng)代碼頁(yè)編號(hào)。
(部分)代碼頁(yè)編號(hào)如下:
代碼頁(yè) | 描述 |
---|---|
65001 | UTF-8 編碼 |
950 | 繁體中文 |
936 | 簡(jiǎn)體中文 GBK (默認(rèn)) |
437 | MS-DOS 美國(guó)英語(yǔ) |
如何更改dos窗口代碼頁(yè)?
更改dos窗口代碼頁(yè)又分為多種方式,每種方式各有優(yōu)缺點(diǎn)。
方式1:更改dos窗口代碼頁(yè)(臨時(shí)有效)
在dos窗口 執(zhí)行chcp 65001
更改dos窗口代碼頁(yè)
優(yōu)點(diǎn):切換代碼頁(yè)靈活,可以將chcp命令放到bat批處理文件內(nèi),臨時(shí)更改控制臺(tái)窗口的編碼格式
缺點(diǎn):僅對(duì)當(dāng)前窗口生效的,其他窗口或新打開(kāi)的dos窗口仍為默認(rèn)的936
C:\Users\cyinl>chcp 65001 Active code page: 65001 C:\Users\cyinl>
驗(yàn)證,執(zhí)行curl www.baidu.com
,可以看到中文亂碼問(wèn)題解決了
方式2:修改注冊(cè)表CodePage項(xiàng)(永久有效)
1)win+r
打開(kāi)運(yùn)行器,輸入regedit
回車,打開(kāi)注冊(cè)表;
2)在路徑計(jì)算機(jī)\HKEY_CURRENT_USER\Console\%SystemRoot%_System32_cmd.exe
找到CodePage
項(xiàng)(沒(méi)有的話新建一個(gè),DWORD類型);
3)修改CodePage
的值為:十進(jìn)制65001
(對(duì)應(yīng)十六進(jìn)制:fde9
)保存即可
優(yōu)點(diǎn):一勞永逸
缺點(diǎn):通過(guò).lnk 快捷方式打開(kāi)的dos窗口,默認(rèn)仍是 936(就很奇怪)
對(duì)通過(guò)Win+R
打開(kāi)運(yùn)行,輸入cmd
回車,打開(kāi)的cmd窗口,進(jìn)行驗(yàn)證
對(duì)通過(guò)文件資源管理器
,地址欄輸入cmd
回車,打開(kāi)的cmd窗口,進(jìn)行驗(yàn)證
對(duì)雙擊C:\WINDOWS\System32\cmd.exe
,打開(kāi)的cmd窗口,進(jìn)行驗(yàn)證
對(duì)開(kāi)始菜單>Windows 系統(tǒng)>命令提示符
或搜索>輸入cmd>命令提示符
打開(kāi)的cmd窗口,進(jìn)行驗(yàn)證
對(duì)執(zhí)行bat批處理文件打開(kāi)的cmd窗口,進(jìn)行驗(yàn)證
test.bat
測(cè)試文件
@echo on chcp pause
雙擊test.bat
批處理文件
注:開(kāi)始菜單或搜索欄里打開(kāi)的dos窗口,實(shí)際上是通過(guò) xxx.lnk 快捷方式打開(kāi)的
方式3:修改 .lnk 快捷方式的文件屬性(永久有效)
1)找到?C:\Windows\System32\cmd.exe
命令程序;
2)右鍵cmd.exe
> 發(fā)送到
>桌面快捷方式
,創(chuàng)建一個(gè)cmd的快捷方式 cmd.exe - 快捷方式.lnk
3)桌面找到cmd的快捷圖標(biāo),右鍵 > 屬性
> 快捷方式
> 目標(biāo)
后邊增加 /K "chcp 65001"
(注意跟 cmd.exe 之間有個(gè)空格),然后點(diǎn)擊應(yīng)用
即可
優(yōu)點(diǎn):對(duì) xxx.lnk 打開(kāi)的dos窗口有效,可以彌補(bǔ)【方式2】注冊(cè)表的CodePage 注冊(cè)項(xiàng)對(duì) .lnk 快捷方式打開(kāi)的dos窗口不生效的不足
缺點(diǎn):僅對(duì)修改的快捷方式的打開(kāi)的dos窗口有效,如果有多個(gè).lnk 快捷方式,需要分別進(jìn)行修改
回到桌面雙擊cmd.exe - 快捷方式.lnk
,打開(kāi)dos窗口,驗(yàn)證效果如下:
從 開(kāi)始菜單>Windows 系統(tǒng)>命令提示符
或搜索>輸入cmd>命令提示符
打開(kāi)的dos窗口,進(jìn)行驗(yàn)證,可以看到未生效
想要開(kāi)始菜單
或搜索
里打開(kāi)的dos窗口也生效,需要修改對(duì)應(yīng)的 .lnk 里的屬性
操作步驟:
1)開(kāi)始菜單
或搜索
里找到命令提示符
,右鍵
> 打開(kāi)文件位置
(我這里是C:\Users\cyinl\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\System Tools
)
2)找到命令提示符
快捷方式,右鍵
>屬性
>快捷方式
>目標(biāo)
后邊增加 /K "chcp 65001",
點(diǎn)擊應(yīng)用
即可
從開(kāi)始菜單
或搜索
打開(kāi)dos窗口,進(jìn)行驗(yàn)證,可以看到已生效
方式4:修改注冊(cè)表增加AutoRun項(xiàng)(永久有效)
1)win+r
打開(kāi)運(yùn)行器,輸入regedit
回車,打開(kāi)注冊(cè)表;
2)在路徑計(jì)算機(jī)\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
,右鍵 > 新建 > 字符串值,重命名為AutoRun
項(xiàng);
3)雙擊AutoRun
,編輯數(shù)值數(shù)據(jù)為:chcp 937
(注意這里我為了區(qū)分其他方式更改的效果,設(shè)置為了937)
優(yōu)點(diǎn):一勞永逸,且對(duì)所有途徑打開(kāi)的cmd都生效
缺點(diǎn):命令行啟動(dòng)后首行顯示的不再是Windows版權(quán)信息,而是"Active code page: xxx"(好像也不算什么缺點(diǎn));另外就是對(duì)于快捷方式來(lái)說(shuō)【屬性】配置后執(zhí)行于【AutoRun】的配置,后執(zhí)行的會(huì)覆蓋先執(zhí)行的(這點(diǎn)應(yīng)該難理解吧)
對(duì)通過(guò)Win+R
運(yùn)行cmd
打開(kāi)的dos窗口進(jìn)行驗(yàn)證如下,可以看到 AutoRun
配置已生效。
注意:【方式2】修改的注冊(cè)表CodePage項(xiàng),我并沒(méi)有去掉,說(shuō)明 AutoRun 配置覆蓋掉了 CodePage 配置
雙擊桌面的cmd.exe - 快捷方式.lnk
圖標(biāo),驗(yàn)證效果如下,可以看到注冊(cè)表里的AutoRun
配置已生效,但是緊接著被其他配置給覆蓋了,最終代碼頁(yè)顯示為 65001
注意:目前 cmd.exe - 快捷方式.lnk 有3處配置,結(jié)合上邊的 AutoRun 配置會(huì)覆蓋 CodePage,可以推測(cè)出,這里的 65001 是 快捷方式的【屬性】配置起的作用
把cmd.exe - 快捷方式.lnk
屬性里的 /K "chcp 65001" 去掉
,然后重新打開(kāi)dos窗口,驗(yàn)證上邊的推測(cè),從結(jié)果看 AutoRun 配置最終生效了(嚴(yán)格來(lái)講是都生效了,只是后執(zhí)行的會(huì)覆蓋先執(zhí)行的)
對(duì)開(kāi)始菜單>Windows 系統(tǒng)>命令提示符
或搜索>輸入cmd>命令提示符
打開(kāi)的dos窗口,進(jìn)行驗(yàn)證。
注意:對(duì)于【開(kāi)始菜單】或【搜索】打開(kāi)的命令提示符,共有【方式2】【方式3】【方式4】3個(gè)配置,結(jié)合驗(yàn)證結(jié)果可以看出快捷方式【屬性】配置最終生效了
對(duì)執(zhí)行bat批處理文件test,bat,打開(kāi)的dos窗口,進(jìn)行驗(yàn)證。
注意:對(duì)于批處理文件,此時(shí)只有【方式2】【方式4】?jī)商幣渲?,可以看出【方?】的AutoRun配置最終生效了
最后結(jié)論:
配置優(yōu)先級(jí) 【快捷方式的屬性】>【注冊(cè)表的AutoRun】>【注冊(cè)表的CodePage】,即 高優(yōu)先級(jí)配置會(huì)覆蓋低優(yōu)先級(jí)配置(嚴(yán)格來(lái)講這里說(shuō)的優(yōu)先級(jí)高,只是因?yàn)樗髨?zhí)行,把先執(zhí)行的效果給覆蓋掉了)
2. 更改批處理文件編碼
通過(guò)更改批處理文件的編碼方式,使文件的編碼與DOS窗口的代碼頁(yè)對(duì)應(yīng)
方式1:更改批處理文件編碼方式
使用記事本,新建test2.bat
批處理文件,內(nèi)容如下,另存為,編碼選擇:ANSI
@echo on echo 中文 pause
雙擊test2.bat
批處理文件,執(zhí)行效果如下:
是亂碼沒(méi)錯(cuò),這是因?yàn)樵谇懊嫜菔具^(guò)程中更改的AutoRun
配置將dos窗口代碼頁(yè)設(shè)置為了437
到注冊(cè)表里把AutoRun
項(xiàng)刪掉(這里就不演示怎么刪了),然后再雙擊運(yùn)行test2.bat
還是亂碼,那就對(duì)了,聰明如你應(yīng)該能想到,注冊(cè)表里還有個(gè)CodePage
配置,配置的是:十進(jìn)制 65001(對(duì)應(yīng) UTF-8),修改為 十進(jìn)制 936(對(duì)應(yīng) ANSI/GBK)或刪掉它?。ú灰獑?wèn)我怎么操作?我不會(huì)告訴你的?。?/p>
我這里改為936(我注冊(cè)表里最初配置的就是936,這里相當(dāng)于復(fù)原),再雙擊運(yùn)行test2.bat
,中文亂碼問(wèn)題解決了
當(dāng)然,你也可以在批處理文件里,在中文輸出命令之前,使用chcp 更改dos窗口的代碼頁(yè),使其與批處理文件的編碼對(duì)應(yīng)
使用記事本,新建test3.bat
批處理文件,內(nèi)容如下,另存為,編碼選擇:ANSI
@echo on chcp 936 echo 中文 pause
雙擊運(yùn)行test3.bat
,進(jìn)行驗(yàn)證
如果批處理文件保存時(shí),編碼選擇:UTF-8,那么需要更改dos窗口的代碼頁(yè)為:65001,這里就不演示了。
總之就是保持批處理文件本身的編碼方式與DOS窗口代碼頁(yè)對(duì)應(yīng),這樣應(yīng)該就不會(huì)出現(xiàn)亂碼問(wèn)題了
最后:
如果還有亂碼問(wèn)題,可以嘗試在DOS窗口的屬性里,改下字體試試。
到此這篇關(guān)于Windows解決cmd/dos窗口中文亂碼問(wèn)題的文章就介紹到這了,更多相關(guān)cmd/dos窗口中文亂碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Windows下通過(guò)bat獲取網(wǎng)絡(luò)連線實(shí)際名稱,加強(qiáng)IP類設(shè)置腳本的兼容性
在之前的工作中,由于分區(qū)域管理,TCP設(shè)置有差異,所以編寫(xiě)過(guò)很多關(guān)于IP切換的腳本,作為大批量電腦維護(hù)的腳本,最重要的就是兼容性,可不能就測(cè)試的那幾臺(tái)電腦通過(guò)了,然后發(fā)布給同事使用的時(shí)候,出現(xiàn)各種狀況2016-02-02window設(shè)置任務(wù)計(jì)劃定時(shí)執(zhí)行 git 更新(git pull)并隱藏運(yùn)行cmd
這篇文章主要介紹了window設(shè)置任務(wù)計(jì)劃定時(shí)執(zhí)行 git 更新(git pull)并隱藏運(yùn)行cmd,需要的朋友可以參考下2020-09-09用bat和 reg實(shí)現(xiàn)關(guān)閉局域網(wǎng)共享
這篇文章主要是為大家介紹一下通過(guò)reg關(guān)閉局域網(wǎng)共享的代碼,其實(shí)這個(gè)cmd命令就是一個(gè)注冊(cè)表的導(dǎo)入功能,直接雙擊運(yùn)行reg文件也是可以的2007-10-10使用FTP下載目錄,即FTP命令批量自動(dòng)下載的bat文件
使用FTP下載目錄,即FTP命令批量自動(dòng)下載的bat文件...2007-03-03用批處理程序修改 計(jì)算機(jī)名 工作組 計(jì)算機(jī)描述的代碼
用批處理程序修改 計(jì)算機(jī)名 工作組 計(jì)算機(jī)描述的代碼,其實(shí)計(jì)算機(jī)名是保存在注冊(cè)表里面的,我們可以通過(guò)直接修改注冊(cè)表,達(dá)到修改的目的2013-03-03