VScode編寫Java程序添加注釋CodeRunner運行時報編碼GBK的不可映射字符的問題解決


問題示例

image-20210729105926719

上圖是我使用CodeRunner插件運行后的結果

問題原因

​ 由於JDK是國際版的,在編譯的時候,如果我們沒有用 -encoding 參數指定我們的JAVA源程序的編碼格式,則javac.exe首先獲得我們操作系統默認采用的編碼格式,也即在編譯java程序時,若我們不指定源程序文件的編碼格式,JDK首先獲得操作系統的file.encoding參數(它保存的就是操作系統默認的編碼格式,如WIN2k,WIN7,它的值為GBK),然后JDK就把我們的java源程序從file.encoding編碼格式轉化為JAVA內部默認的UNICODE格式放入內存中。然后,javac把轉換后的unicode格式的文件進行編譯成.class類文件,此時.class文件是UNICODE編碼的,它暫放在內存中,緊接着,JDK將此以UNICODE編碼的編譯后的class文件保存到我們的操作系統中形成我們見到的.class文件。對我們來說,我們最終獲得的.class文件是內容以UNICODE編碼格式保存的類文件,它內部包含我們源程序中的中文字符串,只不過此時它己經由file.encoding格式轉化為UNICODE格式了。當我們不加設置就編譯時,相當於使用了參數:javac -encoding gbk XX.java,當然就會出現不兼容的情況。

問題解決

指定編譯時的編碼規則

文件-首選項-設置,打開settings.json, 添加如下配置:

image-20210729111256410

在CodeRunner中添加如下配置

"code-runner.executorMap": {
        "java": "cd $dir && javac -encoding utf8 $fileName && java $fileNameWithoutExt",
    },

然后在使用CodeRunner執行,顯示成功

參考博客

VS Code插件 Code Runner 運行 java 時輸入亂碼問題_學而不思則忘-CSDN博客


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM