解決bat批處理輸出亂碼的問題
亂碼原因
Windows的cmd.exe默認(rèn)編碼格式為ANSI
簡體中文版的Windows, 其ANSI對應(yīng)微軟Codepage為cp936
大致等同于GBK編碼

如果你的bat文件是UTF-8編碼的, 或者是是其他Codepage下創(chuàng)建的, 比如
Windows日語版下創(chuàng)建的bat文件, 保存為ANSI編碼時對應(yīng)cp932, 即Shift-JIS編碼
Windows繁體中文版下創(chuàng)建的bat文件, 保存為ANSI編碼時對應(yīng)cp950, 即Big5編碼
當(dāng)bat文件編碼與當(dāng)前cmd環(huán)境不一致時, 雙擊執(zhí)行時就會亂碼

解決方法
方法1
將bat文件轉(zhuǎn)換成你當(dāng)前操作系統(tǒng)的編碼
比如將UTF-8格式bat文件, 右鍵編輯, 然后選文件另存, 指定為ANSI編碼, 保存

然后再執(zhí)行就正常了

方法2
假如你的bat文檔是日文格式的或其他格式, 首先需要將bat文件的編碼轉(zhuǎn)換到UTF-8格式
會python的話可以參考我的另一篇博客
《記錄一些最近用過的編碼轉(zhuǎn)換》
https://www.jb51.net/article/171899.htm
復(fù)制出一些字符串或者是字節(jié)集, 跑碼識別一下看是什么的編碼的
然后用文本工具或是python代碼實現(xiàn)轉(zhuǎn)換
def decoding(path,fromcode,tocode):
# 以bytes形式讀取bat內(nèi)容
with open(path,'rb') as f:
b = f.read()
print(b)
# 解碼另存為'temp.bat'
with open('temp.bat', 'w', encoding=tocode) as f:
s = b.decode(fromcode,errors='ignore')
f.write(s)
decoding('dir.bat','gbk','utf-8')
得到UTF-8格式的bat文件
接下來需要將你的cmd也調(diào)整到utf-8
將以下內(nèi)容保存為cmd_UTF-8.reg然后運行
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe] "CodePage"=dword:0000fde9
此時cmd環(huán)境也就變成了UTF-8的

然后此時再執(zhí)行bat文件就不會亂碼了

至于后續(xù)將cmd恢復(fù)回默認(rèn)也很簡單
將以下內(nèi)容保存為cmd_ANSI.reg然后運行即可
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe] "CodePage"=-
到此這篇關(guān)于解決bat批處理輸出亂碼的問題的文章就介紹到這了,更多相關(guān)bat批處理輸出亂碼內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信