前段時間用Java web技術做了一個小小的微博系統,在做的過程中發現了許多中文亂碼問題,一下是避免亂碼問題的幾點建議:
1、在整個系統開發過程中,從前端到後臺必須採用統一的中文編碼方式,如gb2312,UTF-8等,否則會出現意想不到的系統錯誤。
(1)、在JSP頁面中設置編碼方式,<% @ page contentType = " text/html;charset=gb2312 " %>
或者在server.xml配置文件來實現。
< Connector port ="8080" maxHttpHeaderSize ="8192"
maxThreads ="150" minSpareThreads ="25" maxSpareThreads ="75"
enableLookups ="false" redirectPort ="8443" acceptCount ="100"
connectionTimeout ="20000" disableUploadTimeout ="true" URIEncoding ="gb2312" />(2)、在servlet中設置編碼方式:request.setCharacterEncoding("gb2312");
response.setCharacterEncoding("gb2312");
(3)、在創建數據庫時選擇中文編碼方式gb2312或utf-8。
2、在提交表單或頁面跳轉時,如果通過URL傳值,則只能傳遞英文或數字,否則在後臺你將無法獲取你期望的值。如果採用這種傳值方法:
解決方法:首先將得到的值要再用iso-8859-1編碼得到原文後,再進行用utf-8(看具體頁面的charset是什麼utf-8或gbk)進行解碼即可。new String(strCn.getBytes(“ISO-8859-1”),“UTF-8”)。
3、數據庫亂碼問題,如果採用MySQL數據庫,那麼他的默認編碼是拉丁文,第一種解決方法是打開數據庫的配置文件my.ini,將編碼方式改爲utf8,或gb2312;第二種方法是通過JDBC直接鏈接數據庫的時候,配置的代碼如下:jdbc:mysql://localhost:3306/workshopdb? useUnicode=true&characterEncoding=GBK,這樣將會避免中文亂碼問題。