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

轉載自https://www.cnblogs.com/nbalive2001/p/4514342.html

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個字節的頭信息EF BB BF,按照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,尤其是做網站,在非漢語國家,將無法正常瀏覽。在信息化時代,國際交往日益頻繁;做軟件和網站,不能只着眼當前,也要爲日後維護做優化、降低維護成本。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章