Ant編譯utf-8非法字元:/65279 解決方法

yangxi_001發表於2014-04-08
這是一個很鬱悶的問題,碰到這問題百度又不能直接搜尋“&#65279”,自然無法查詢到結果。普通的瀏覽器也查不到為啥會出現這個空格。
出現此問題一般是在瀏覽器上瀏覽上某一段包含空格,且用IE瀏覽器無法檢視,但是用FF瀏覽器filebug檢視HTML時就會出現“&#65279”,刪除這字元即正常顯示,但重新整理頁面又重新出現。
 
使用ant編譯java檔案時報非法字元(不可見的)問題
 
最簡單的方法:
一般來說錯誤資訊會提示非法字元的位置,可以在eclipse裡面切換java檔案的編碼方式,比如:ISO-8859-1,等編碼,可以觀察到指定位置的非法字元。刪除非法字元即可編譯通過。
對於較少檔案適用
-------------------------------------------------
另外補充:
一般用UE或記事本編輯過的UTF-8的檔案頭會加入BOM標識,該標識由3個char組成。在UTF-8的標準裡該BOM標識是可有可無的,Sun 的javac 在編譯帶有BOM的UTF-8的格式的檔案時會出現“非法字元:/65279”的錯誤,但是用Eclipse進行編譯卻沒有問題,原因在於Eclipse 使用的是自己的JDT,而非javac,關於JDT的描述可以到eclipse的官網上去檢視。
下載editplus,開啟你的java原始檔(可以開啟多個檔案),選擇“文件”-“檔案編碼”-“批量更改檔案編碼…”選擇所有你需要修改的編碼的java原始檔,選擇字符集“UTF-8″記得是UTF-8,而非“utf-8 bom”。點選批量儲存按鈕。再執行你的ant指令碼,此時編譯就不會報出“非法字元:/65279”這個錯誤了。


出現這種情況時,網上提供了兩種解決方法: 
a) 利用UE、Editplus等文字編輯器重新儲存檔案為不帶BOM的UTF-8格式 
b) 可使用eclipse自帶的編譯器進行編譯 
<!--在ant中新增property,使用eclipse jdt compiler編譯--> 
<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter" /> 
相關jar包,在eclipse安裝檔案plugins目錄下:org.eclipse.jdt.core_xxx.jar,xxx為版本號 
c)用DW關聯Notepad++,必要的時間用notepad++裡的“轉化為utf-8無bom編碼格式”

相關文章