問題:
源碼如下
public class BusinessException extends RuntimeException {
private static final long serialVersionUID = 1L;
private String aa ="上課時開始";
protected final String message;
public BusinessException(String message)
{
this.message = message;
}
@Override
public String getMessage()
{
return message;
}
}
用idea編譯(運行項目,使用默認編譯)
public class BusinessException extends RuntimeException {
private static final long serialVersionUID = 1L;
private String aa = "涓婅\ue1f3鏃跺紑濮�";
protected final String message;
public BusinessException(String message) {
this.message = message;
}
public String getMessage() {
return this.message;
}
}
如圖所示,成員變量aa編譯後,變成了亂碼。
(ps:使用maven進行編譯不會出現亂碼,但在程序執行過程中,中文還是會變成亂碼)
原因:idea進行編譯時文件編碼格式與idea進行編譯時採用的編碼格式不一致;
解決方案:
1)在idea中選擇:file -- setting -- Edit -- File Encoding 下按圖所示設置爲UTF-8
2)設置Java Complier,添加 -encoding utf-8
3)正常情況下再次編譯應該不會再出先亂碼了,如果還出現可以嘗試一下步驟:
- 重啓idea(如果不管用,查看下面那條)
- 在項目下的.idea文件夾下找到encodings.xml,刪除其中非UTF-8的文件,如下圖: