Java編輯提示錯誤: 編碼 GBK 的不可映射字符 (0x80)



原文鏈接:https://blog.csdn.net/weixin_49002966/article/details/110039355

 

在DOS界面運行編譯Java文件時提示錯誤: 編碼 GBK 的不可映射字符 (0x80)


理解:
java程序在編譯的時候,需要使用JDK開發工具包中的JAVAC.EXE命令,而JDK開發工具包是國際版的,默認格式為UNICODE的編碼格式。因此在默認情況下,javac.exe會采用默認的編碼格式,什么是默認的編碼格式呢?也就是我們在編譯JAVA程序時,在未指定源程序文件的編碼格式的情況下,JDK會優先獲取操作系統的file.encoding參數,然后JDK就把我們的JAVA源程序從file.encoding編碼格式轉化為JAVA內部默認的UNICODE格式放到內存中。然后,javac把轉換后的UNICODE格式的文件進行編譯成class類文件,此時.class文件是UNICODE編碼的,它暫放在內存中,之后,JDK將此以UNICODE編碼編譯后的.class文件保存到操作系統中形成我們見到的.class文件。

為什么JDK開發工具包默認格式為UNICODE的編碼格式呢?
主要原因是因為UNICODE的編碼格式是最統一的編碼,可以用來表示所有語言的字符,而且是定長雙字節(也有四字節的)編碼,包括英文字母在內。 相對於我們國內來說,現在較多使用的編碼格式多位UTF-8以及GB2312等編碼格式。這里編譯java源程序時出現的錯誤: 編碼 GBK 的不可映射字符 (0x80)的主要原因是,在編寫java源程序代碼時代碼中添加了中文注釋,且java文件的編碼格式不是ANSI編碼格式,導致在編譯java源程序時報錯,無法成功編譯。

java編譯的時候會轉換成統一的unicode編碼處理,最后保存的時候再轉換為utf編碼。所以解決的方法就是更改java源程序的編碼格式。

 

第一種方法就是使用命令javac -encoding UTF-8編譯:
以HelloWorld.java的源程序為例,編譯時執行的命令為:javac -encoding UTF-8 HelloWorld.java。執行后,java源程序就被成功編譯為.class文件,並且能夠通過java.exe命令執行。

 

第二種方法就是在編寫java源程序代碼保存時,選擇合適的編碼語言進行保存。
以notepad編輯軟件為例,在保存時把java文件轉換成ANSI編碼格式即可。操作方法為:選擇菜單欄中的編碼,選擇“ANSI格式編碼“,選擇后保存即可。

 


免責聲明!

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



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