java項目編碼不統一, java:編碼utf-8的不可映射字符

咱們在進行JAVA開發時,避免不了引入一些第三方的文件,但有些第三方文件在編寫的時候默認的編碼可能不是UTF-8的,這將會致使在idea中亂碼,而且若是編譯級別夠高還會引發編譯錯誤,好比:java

clipboard.png

報錯以下:shell

clipboard.png

那麼在IDEA中如何解決此類問題呢?macos

reload 從新使用指定的編碼進行加載

咱們帶有中文的編碼每每會出如今gb2312上。咱們在亂碼的文件上點右鍵,而後點FileEncodingwindows

clipboard.png

再而後按如下動圖操做:ide

圖片描述

此時咱們告知IDEA說,此文件的編碼是GB2312,你使用GB2312渲染並從新打開。而後就能正常顯示了。但此操做並無改變文件的編碼格式,也就是說該文件的編碼仍然是gb2312,並不符合咱們對代碼編碼必須是utf-8的要求。因此編譯仍然會報錯。編碼

convert 轉換,將文件的編碼轉換爲utf-8

此時,咱們再次點擊FileEncodingidea

clipboard.png

再而後按如下動圖操做:spa

圖片描述

上述操做是說,將當前文件編碼轉換爲utf-8的。通過以上操做後,原來gb2312的亂碼文件已經變成了能夠實別的utf-8了。再編譯固然就不會報錯了。3d

reload by gb2312: 使用gb2312編碼從新打開,並無改變文件的任何內容;convert to utf-8: 將此文件轉化爲utf-8編碼,並以utf-8編碼從新打開。此時將改變文件的內容,將裏面的文字由gb2312編碼變動爲utf-8編碼。文件的具體內容已經發生了變化。

批量轉換

若是文件過多的話,一個個這樣轉換的話相信你必定會很頭疼。在此,以macos系統爲例(windows中應該有批量轉換的軟件)拋磚引玉,給你們提供一個思路。code

步驟以下:
1 批量轉碼,並另存爲.bak文件

find *.java -exec sh -c "iconv -f GB2312 -t UTF8 {} > {}.bak" \;

此時,原來GB2312的每一個文件都對應生成了一個.bak文件,此bak文件的編碼爲utf-8

2 刪除原文件

rm *.java

此時原GB2312的文件就被咱們刪除了。

  1. 將.bak文件批量更名

使用finder打開文件夾,選中全部的文件。右鍵 -> 批量重命名 將.bak 替換爲空。此時便恢復了原來的文件名,而且編碼變動爲utf-8了。

相關文章
相關標籤/搜索