亂碼原因
windows的cmd.exe默認編碼格式為ansi
簡體中文版的windows, 其ansi對應微軟codepage為cp936
大致等同于gbk編碼
如果你的bat文件是utf-8編碼的, 或者是是其他codepage下創建的, 比如
windows日語版下創建的bat文件, 保存為ansi編碼時對應cp932, 即shift-jis編碼
windows繁體中文版下創建的bat文件, 保存為ansi編碼時對應cp950, 即big5編碼
當bat文件編碼與當前cmd環境不一致時, 雙擊執行時就會亂碼
解決方法
方法1
將bat文件轉換成你當前操作系統的編碼
比如將utf-8格式bat文件, 右鍵編輯, 然后選文件另存, 指定為ansi編碼
, 保存
然后再執行就正常了
方法2
假如你的bat文檔是日文格式的或其他格式, 首先需要將bat文件的編碼轉換到utf-8格式
會python的話可以參考我的另一篇博客
《記錄一些最近用過的編碼轉換》
復制出一些字符串或者是字節集, 跑碼識別一下看是什么的編碼的
然后用文本工具或是python代碼實現轉換
1
2
3
4
5
6
7
8
9
10
11
|
def decoding(path,fromcode,tocode): # 以bytes形式讀取bat內容 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也調整到utf-8
將以下內容保存為cmd_utf-8.reg
然后運行
1
2
3
|
windows registry editor version 5.00 [hkey_current_user\console\%systemroot%_system32_cmd.exe] "codepage" =dword:0000fde9 |
此時cmd環境也就變成了utf-8的
然后此時再執行bat文件就不會亂碼了
至于后續將cmd恢復回默認也很簡單
將以下內容保存為cmd_ansi.reg
然后運行即可
1
2
3
|
windows registry editor version 5.00 [hkey_current_user\console\%systemroot%_system32_cmd.exe] "codepage"=- |
到此這篇關于解決bat批處理輸出亂碼的問題的文章就介紹到這了,更多相關bat批處理輸出亂碼內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/watfe/article/details/116263492