JavaWeb亂碼問題


本篇內容如下,主要解決各種亂碼問題。

綜合解決措施,直接跳轉到文末

數據的流動,是從瀏覽器頁面->Java后台程序->數據庫

亂碼的發生,一般原因是編解碼的字符集不統一造成的。也就是這三者之間數據流動時,字符集不統一造成的。

記錄一下最近遇見過的幾種亂碼問題。

一、瀏覽器頁面亂碼

1、現象:瀏覽器頁面亂碼

問題:正常的SSM項目,啟動后頁面出現中文亂碼。

分析:可能是使用了tomcat高版本導致的亂碼問題。

解決:IDEA中-edit configurations-VM options設置:-Dfile.encoding=UTF-8

 

二、Debug后台獲取到的中文數據亂碼

2、現象:發現數據亂碼后,debug發現Java后台程序中接收的時候就已經出現了亂碼。

分析:在Java后端程序中,解析前端參數和數據前,需要指定字符集;否則就會出現亂碼。

在J2EE中,需要request.setEcoding,並且該指令需要在獲取任意參數最前面執行。

在SSM等框架中,則是在配置文件中,設置攔截器,指定編碼字符集為UTF-8。

 

三、數據庫存儲中文亂碼

3、現象:Java后端程序debug是正常顯示中文,但數據庫中存儲時,中文變成了亂碼。

分析:數據庫字符集錯誤,或者沒有指定存儲的時候字符集。

解決:

這里需要注意。與數據庫連接的URL中,一定要設置如下:

url=jdbc:mysql://localhost/user_test?useUnicode=true&characterEncoding=utf-8

需要帶有后綴:設置字符集且指定為UTF-8。

另外,網上其它資料,如:

1、在命令行中設置MySQL的編碼格式,將latin改為UTF-8;

2、查看數據庫建庫語句,數據庫建立的時候,是否指定了字符集為UTF-8;

但是,一定要確保了了URL中指定了字符集,這個是首要前提。

因為,經過嘗試,即使嘗試過后面兩種方式,確定是UTF-8后,亂碼問題仍然存在。

最終,修改了URL,在URL中添加了指定字符集后綴,才解決了中文存入數據庫亂碼問題。

 

四、其它亂碼問題:

1、控制台 tomcat catalina log亂碼問題。

2、控制台 tomcat local log亂碼問題。

修改tomcat配置文件logging.properties,將此文件中所有的編碼格式均指定為GBK則可以解決以上兩個問題。

有些教程說修改所有編碼為GBK,有些說保持UTF-8不要修改,暫時還未搞清究竟應該設置哪個。

但這里的配置,對以上兩項是否輸出亂碼是有影響的,這是確定的。

配置如下,有些tomcat的logging.properties是不完整的,不同版本不一樣。

根據網上教程完善指定編碼,或者直接如下添加,應該都可。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

 

 

五、idea編譯亂碼(解決server控制台輸出中文亂碼)

1、據網上資料,在idea的bin目錄下進行文件編碼修改是不生效的;

在兩個文件末尾加上 -Dfile.encoding=UTF-8(bin目錄下修改不生效,被覆蓋)

原因:

idea的bin目錄下的idea64.exe.vmoptions和idea.exe.vmoptions兩個文件的修改是不會生效的,會被C盤下idea文件中的idea64.exe.vmoptions配置給覆蓋。

而在idea中help - Edit Custom VM Options中的配置文件,是關聯C盤下idea的idea64.exe.vmoptions文件的,所以修改直接生效。

相當於,運行的時候,以C盤下的idea64.exe.vmoption為准,加載這個配置文件(大概是這個道理)。

 

 2、直接在idea中,上方工具欄 - Help - Edit Custom VM Options中,添加 -Dfile.encoding=UTF-8,然后重啟IDEA。

 

六、Tomcat服務亂碼

tomcat - conf - server.xml

進行如下修改

----------------------------------------------------------------------

 

 ======================================

總而言之:

七、出現亂碼問題,綜合解決措施如下:

1、help - Edit Custom VM Options 中添加 -Dfile.encoding=UTF-8;

2、Edit Configuration - VM Option,添加 -Dfile.encoding=UTF-8;

3、修改tomcat - conf - server.xml,指定編碼(方法參考上文);

4、修改logging.properties,指定所有編碼(方法參考上文)。

 

總而言之,亂碼問題就是各個開發工具中字符集不統一造成的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM