1. 程式人生 > >UTF-8 BOM填坑

UTF-8 BOM填坑

最近在負責公司的運維工作,公司伺服器是在LInux上部署的,需要在Jenkins釋出專案。最近的迭代釋出時,在Jenkins上構建專案遇到其中一個專案啟動報錯,報錯資訊如下:

[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /root/.hudson/jobs/sv2-common-web/workspace/src/main/java/sv2/common/web/sso/interceptor/SsoLoginInterceptor.java:[1,0] error: illegal character: '\ufeff'
[ERROR] /root/.hudson/jobs/sv2-common-web/workspace/src/main/java/sv2/common/web/sso/interceptor/SsoLoginInterceptor.java:[1,9] error: class, interface, or enum expected

其中的一個Java檔案編譯報,報錯原因是:illegal character: '\ufeff'

丟給百度之後,原來是UTF-8和UTF-8 BOM 之間的愛恨糾葛。當時在用Windows自帶記事本在改動這個檔案的時候,還特別注意了一下,另存為UTF-8,結果還是被坑了,一番百度後,結論:還是少觸碰這個UTF-8 BOM,不知道啥時候就坑你一下。

解決方法:因為Windows自帶的記事本,在存為UTF-8時,其實是存為UTF-8 BOM格式的,所以還是建議用IDE編輯檔案,並且注意IDE的編碼,或者網上推薦是用Notepad++進行編碼更改,都可以解決這個問題。解決完檔案編碼問題,再次釋出到伺服器就沒問題了。