一個菜鳥的中文亂碼解決之路(struts2應用爲例)

(1)首先必須設置你的JSP頁面與Action之間傳遞的不是亂碼。菜鳥爲求保險,把頁面跟配置文件全設置了。
頁面設置添加<meta http-equiv="Content-Type" content="text/html;charset=GB18030">。
配置文件設置:
struts.xml中
<struts>
<constant name="struts.i18n.encoding" value="GBK"/>
<include file="struts-default.xml"/>
</struts>
web.xml中
<filter>
<filter-name>struts-cleanup</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ActionContextCleanUp
</filter-class>
</filter>

注意web.xml中標籤的順序。
這樣你在頁面中提交表單後,後臺Action中得到的就不是亂碼了。但菜鳥曾畫蛇添足過,就是在Action中將要插入的數據進行了字節編碼,代碼如下:
//userName=new String(userName.getBytes("ISO-8859-1"),"gbk");
//city=new String(city.getBytes("ISO-8859-1"),"GBK");
//province=new String(province.getBytes("ISO-8859-1"),"GBK");
這樣用System.out.println(username);得到的便是??之類,某菜鳥也是百思不得其解,最後只總結出一條,你只要保證在插入數據庫前的數據是跟數據庫相同的編碼相同就可。某菜鳥猜是不是因爲在Request提交時Struts2給進行了編碼,反正在servlet中這麼做是沒錯的,因爲request的默認提交編碼是“ISO-8859-1”。等待求證吧!(汗~~~~)
(2)第二部就是數據庫的設置。菜鳥用的是MySQL6.0.
建議在建數據庫跟表之前就設置好,否則建好後再設置,新的設置只對新建的數據庫起作用,舊的那些仍是亂碼的說。
菜鳥幹什麼都求保險,所以能做的都做,也不知道有沒有必要。
第一步:
數據庫設置:數據庫安裝目錄下my.ini文件中,修改這兩項:
CLIENT SECTION
# ----------------------------------------------------------------------
(大約60多行)
default-character-set=gbk
 SERVER SECTION
# ----------------------------------------------------------------------
(在client section下面)
# created and no character set is defined
default-character-set=gbk
第二步:
建數據庫時,最好能加上這一條,反正不會多,哈哈~~~set names 'gbk';

如果設置完後仍出現中文亂碼,不要氣餒,重啓計算機或重啓服務。但Mysql在偶小電上總出毛病,爲求保險偶沒有去手動重啓MySQL服務,重啓的計算機。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章