支持原創,轉載請注明出處,謝謝
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
問題:在vscode(其實不分是在vscode或者其他程序,在cmd.exe也會)中有時候編譯輸出含有中文的內容時,在輸出界面顯示的是亂碼,如圖
原因:我們需要傳遞給計算機的所有信息都會轉換成0 1表示的二進制數字流,經過CPU處理后再輸出給相應的程序,程序再把這些二進制數字流翻譯成方便人讀懂的各種語言,因此輸入和輸出兩個方向存在步驟:編碼和譯碼,對字符處理的編碼規則成為字符集,常見的有ASCII,UTF8等,不同的字符集下,一個字符對應的二進制數字不同,因此如果在A程序中用1編碼規則輸入字符,經CPU處理后在B程序中用2編碼規則輸出,由於1編碼規則和2編碼規則不同,在輸出程序中就會顯示亂碼而不是你在輸入程序中輸入的內容,只有輸入和輸出程序采用相同的編碼才會得到相同的輸出。
解決:首先確定自己在編輯某個文件時輸入的中文是采用哪種編碼,在vscode中可以在右下角狀態欄查看,如下圖為GBK編碼,vscode默認為UTF8,
vscode可以在設置里查看和配置(搜索欄輸入encoding快速查找到該配置項),如下圖:
上述只是輸入采用的字符集編碼,對輸出而言,在Windows下,可以通過右鍵查看cmd.exe的屬性查看其顯示的編碼字符集,如下圖:
只有當輸入和輸出的編碼字符集相同時,才不會輸出亂碼。
另外在vscode的輸出面板,默認采用的是UTF8的字符編碼,目前還不知道怎么設置輸出面板的字符編碼。而終端面板和cmd.exe的字符編碼一樣,默認都是用GBK字符編碼,所以如果你采用的是GBK編碼輸入,調試時如果配置在終端輸出結果,不會出現亂碼,而如果配置在輸出面板輸出運行結果,則會出現亂碼,runcode插件默認在輸出面板輸出程序運行結果,這種情況下解決方法要么配置runcode插件的輸出結果在終端輸出,方法見下圖,要么修改cmd.exe的字符編碼為UTF8,方法請網上查詢。
注1:vscode的terminal使用和cmd一樣的編碼字符集;
注2:vscode下修改了配置后使用run code運行程序還是亂碼,可能是你在編輯該文件時使用的是另一種字符集,需要重新用配置好的字符集編碼重新輸入你的中文內容。