javac編譯提示錯誤需要為 class、interface 或 enum


HelloWorld.java:1: 需要為 class、interface 或 enum
鍩縫ublic class HelloWorld{
^
1 錯誤

這個錯誤出現的原因主要是在中文操作系統中,使用一貫的“javac HelloWorld.java”方式編譯UTF-8(帶BOM)編碼的.java源文件,在沒有指定編碼參數(encoding)的情況下,默認是使用GBK編碼。當編譯器用GBK編碼來編譯UTF-8文件時,就會把UTF-8(帶BOM)編碼文件的文件頭的占3個字節的頭信息,按照GBK中漢字占兩個字節、英文占1個字節的特性解碼成了“亂碼”的兩個漢字。這個源文件應該是用記事本另存存為UTF-8編碼造成的。

 

 對於非GBK及其子集編碼(GB2312)的正確的源文件,編譯方式為“javac -encoding "UTF-8" HelloWord.java”,這樣代碼錯誤的指定代碼里就不會出現亂碼的中文。

 但是依然會有錯誤,提示“HelloWorld.java:1: 非法字符: \65279。  

 

這是因為.java對於UTF-8編碼,只識別UTF-8(不帶BOM)那種。而記事本只支持保存文件為帶簽名的UTF-8,那有沒有辦法解決呢?

 

當然是有的,那就是使用EmEditor、EditPlus、UltraEdit或Notepad++之類的工具另存為UTF(不帶BOM)(區別於帶UTF + BOM)的編碼文件。這時候使用“javac -encoding "UTF-8" HelloWorld.java”,就沒有上述編碼問題了。

也許有人會說,“我干脆都用GBK不就行了嗎,為什么還要用UTF-8呢?”

這是因為UTF-8支持世界多種語言的文字,被世界多數國家接受,是國際通用編碼,也是Java推薦使用的編碼。Java集成開發環境Eclipse中默認編碼就是UTF-8。如果使用GBK,尤其是做網站,在非漢語國家,將無法正常瀏覽。在信息化時代,國際交往日益頻繁;做軟件和網站,不能只着眼當前,也要為日后維護做優化、降低維護成本。


免責聲明!

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



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