1. 程式人生 > >idea軟體編碼已經設定好了為utf-8,但是svn中down下來的檔案格式本身不是utf-8的,此時開啟後會出現中文亂碼解決方法

idea軟體編碼已經設定好了為utf-8,但是svn中down下來的檔案格式本身不是utf-8的,此時開啟後會出現中文亂碼解決方法

我是個idea的忠實使用者,新公司的專案都是用eclipse做的,通過svn拉下程式碼後發現,註釋的內容裡,中文內容都是亂碼。問過專案負責人,說可能是GBK編碼。

但是,我通過idea的setting設定了編碼,試了5種編碼都沒用,中文內容還是亂碼。最後還是自己試出來解決方案。

詳細的原因請參考最後的講解。

亂碼示例圖

   下面來介紹解決方法

   第一步是點選右下角,如圖所示的位置,然後選擇GBK(由於我的專案之前是GBK編碼,所以在這裡我要是選擇的GBK)。另外提醒一點,如果你的idea右下角沒有這個按鈕,請在你的編碼介面中隨意右鍵,然後選擇“File Encoding”,效果一樣。 


 

  第二步會出現如下提示,這裡很重要,不要選錯,先選擇“Reload”,這裡請嚴格按照我說的來,文章後面會告訴你如果選錯會有什麼後果

 

接著你就會看到亂碼已經變成中文了,但是這對我還沒結束,由於我將頁面改成了GBK編碼,但這並不是我想要的,我想要的是utf8的編碼格式。

 
 

  第三步,就是再次點選這個地方,然後選擇UTF-8格式

 

 

  最後一步就是選擇Convert,這就結束了

 
 

相信有些朋友已經有點頭緒了。這個“Reload”選擇後不會改變檔案和內容的編碼格式,而是將IDE本身的解碼格式由我原先的UTF-8換成了 GBK,由GBK的解碼格式解GBK的檔案就不會再看到亂碼。而“Convert”是將GBK格式的檔案內容轉換成了UTF-8,同時將IDE的解碼格式 也換成UTF-8。

 

所以之前說的,如果你第一次選擇了“Convert”那麼就會由原來的亂碼弄成另一種亂碼,反正我是沒弄回來過。好在我是在git的branch上做的實驗,我的原始碼檔案還保留著,所以沒有問題。

 

在以上的基礎上,我猜測idea對java檔案的編輯,應該是讀取檔案內容,並以IDE本身指定的encoding來進行解讀

舉例,如果IDE的encoding為GBK,而java檔案是UTF8那麼IDE讀取檔案的時候就會顯示亂碼,如果這個時候使用上文所說的“Convert”來講亂碼轉換成UTF8檔案。

重點來了,這個時候檔案本身是UTF8格式編碼,轉成UTF8格式應該是不會有問題的。但結果是,你由GBKencoding換成用UTF8的encoding去解碼這個檔案發現還是亂碼。

原因是由於IDE用GBK讀取UTF8檔案時顯示的是亂碼,檔案並沒有亂碼,而是IDE讀取出來的檔案由於encoding解碼不對才顯示的亂碼。那麼你這個時候使用“Convert”不過是將IDE讀取的內容轉換成了UTF8,而並非是將檔案內容轉換成UTF8。就這麼一個微小的區別,但結果卻是完全不可控制的。

以上是開啟專案後的單個檔案修改,如果是整個專案需要改變編碼格式,那麼只需要把工程編碼格式設定成與先前svn上的格式一致就行,settings-->editor-->file encoding 把工程的編碼格式設定成對應格式即可,如果是其他專案再改回來就行,idea預設是採用utf-8進行編碼,開啟檔案用的編碼格式也是utf-8,所以如果老專案編碼格式不是utf-8的就需要修改成對應的