資料庫及頁面亂碼問題
目錄
MySQL亂碼問題
1、前臺頁面
JSP、HTML頁面頭部設定字元編碼為UTF-8。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8 |
2、控制器/過濾器(filter)
(1)servlet設定頁面請求和迴應的編碼:
request.setCharacterEncoding("utf-8"); [一般用於post請求方式]
|
(2)如果是struts2
struts.xml中新增如下語句:
<constant name="struts.i18n.encoding" value="utf-8" /> |
(3)如果使用了spring框架
web.xml配置中,設定初始化引數 <filter>
public class YkFilter implements Filter{ //其他程式碼未全部寫出,這裡只寫出和編碼相關的語句 private String encoding = null;//定義表示編碼方式的變數 @Override
@Override ............. }
}
|
3、資料庫及表格編碼
第一:保證資料庫的編碼方式為UTF-8;
第二:保證資料表的編碼方式為UTF-8;
第三:使用jdbc連線資料庫時,在URL中新增useUnicode引數(useUnicode=true表示使用Unicode字符集)和characterEncoding引數(characterEncoding=utf8,當useUnicode設定為true時,指定字元編碼)
如:jdbc:mysql://localhost:3306/database_name?useUnicode=true&characterEncoding=utf8"
資料庫及資料表的編碼格式檢視及修改請檢視:MySQL相關命令
|
4、字元流編碼
String string = request.getParametes('sname');
//把得到的值轉換為原始編碼,再轉換為UTF-8編碼
string=new String(string.getBytes("iso8859-1"),"UTF-8"); [一般用於get請求] |
5、Tomcat編碼
想通過get請求帶中文資料也不會出現亂碼,還需要編輯Tomcat的編碼
在server.xml檔案中,在埠號8080後新增編碼格式 URIEncoding=”utf-8”
<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" UTFEncoding=”utf-8” />
|