解決jsp+MysQL輸入和輸出中文亂碼的方法!

來源:互聯網
上載者:User
當使用JSP頁面將中文資料添加到MySql資料庫中的時候發現變為亂碼,或者從mysql中讀取中文的時候出現亂碼,這些問題根源都是由於字元編碼不一致造成的。要知道病源是什麼我們才能對症下藥,所以我將問題產生的過程簡單描述一下(如有不對望高人賜教)
 我們以一個從form表單讀取資料並寫入mysql資料庫的例子來講解;

HTML頁面參數—(以瀏覽器的編碼方式發送)—》JSP頁面—(以JSP定義的編碼方式被編譯)—》被JSP引擎編譯為*.class檔案——》在JSP容器中運行——》傳遞給Mysql資料庫—(以資料庫的編碼方式讀取資料並儲存)—》讀取Mysql—(以資料庫的編碼方式讀取)—》JSP頁面接受後在瀏覽器中顯示(以瀏覽器編碼方式解碼顯示);

注意:這裡的“瀏覽器編碼”“JSP頁面編碼”“JSP頁面輸出編碼”“JSP頁面輸入編碼”“資料庫的編碼”可能存在潛在的不一直,當它們中的任意一個不相同的時候就會出現亂碼;就好像傳話遊戲一樣,張三要把話傳給李四,李四把他聽到的傳給王五,要讓王五知道張三說的什麼就需要他們三個人使用的相同語言,如果李四是個火星人,他當然聽不懂張三說什麼,然後他還不厚道的對王五說火星話(亂碼),結果王五就只能聽到亂碼了。(比喻比較汗~~^_^!)

好了,現在我們就依次把各個編碼方式改為相同就可以了;
//-------------------------瀏覽器編碼-----------------
<html>
  <head><meta http-equiv="Content-Type" content="text/html; charset=GB2312"></head>
</html>
//---------------------------JSP頁面-------------------
<%@ page pageEncoding="GB2312"%>                            //JSP頁面編碼:
<%@ page contentType="text/html";charset=gb2312"%>    //JSP頁面輸出編碼:
<% request.setCharacterEncoding("gb2312"); %>               //JSP頁面輸入編碼:
//------------------------MySql編碼-------------------
Connection connect = java.sql.DriverManager.getConnection(
"jdbc:mysql://localhost/mydb?user=登陸帳號&password=你的密碼&useUnicode=true&characterEncoding=gb2312");
//-------------------------------------------------------
注意:gb2312的寫法(紅色部分) 在瀏覽器和資料庫中的寫法要區分!
以上配置測試成功!(tomcat5.5+MySql5.0)
//另外看了網上的很多文章,比如通過函數轉碼啊~~改設定檔啊~~都不如這樣來的簡便且成功率高!
推薦!

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.