萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> jsp編程 >> jsp和servlet操作mysql中文亂碼問題的解決辦法

jsp和servlet操作mysql中文亂碼問題的解決辦法

   自己做測試的時候用到jsp/servlet 向mysql中寫數據,但是中文總是亂碼,今早糾結了半天才搞定,分享給大家我的解決辦法

  首先看是從什麼地方開始出現的亂碼,只要統一編碼,就不會出現亂碼,下面以uft-8(個人認為最好)為例,詳細說明:

  1、如果亂碼是從jsp頁面出現的,jsp頭部頁面加上:

  在head標簽中加上標簽。

  2、如果亂碼是在servlet中出現的,則有兩種方法:

  一種是在每個servlet中doget和doPost方法頭部加上

  request.setCharacterEncoding(“UTF-8″);

  第二種最保險,一勞永逸,是專門寫一個過濾器類,也稱國際化,類名為SetCharacterEncodingFilter內容如下

1.jpg

2.jpg

 

  然後在web-inf的web.xml中加上如下代碼:

3.jpg

 

  然後在web-inf的web.xml中加上如下代碼:a這樣就搞定了

  3、如果還是有亂碼,就是mysql數據庫的問題了

  1)保證建立數據庫的時候數據庫編碼選擇的是utf-8,最好在每個表中也指定編碼格式,mysql默認是latin1

  2)如果mysql版本是4.x以上,數據庫中還是出現亂碼,有以下兩種解決方法:

  一種是在連接數據庫的代碼中指定編碼方式:

 

String url = “jdbc:mysql://localhost:3306/test2?autoReconnect=true&useUnicode=true&characterEncoding=gbk&mysqlEncoding=utf8″ ;

 

  如果還是不行的話就是用

 

show variables like ‘collation_%';

 這個命令來查看默認字符集,如果不是utf-8的話在my.ini(windows)或者是my.cnf(linux)將相應的編碼修改成utf8之後重啟mysql服務器就ok了

copyright © 萬盛學電腦網 all rights reserved