Corsair

          My javaWorld
          數據加載中……
          解決jsp+MysQL輸入和輸出中文亂碼的方法!
          當使用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)
          //另外看了網上的很多文章,比如通過函數轉碼啊~~改配置文件啊~~都不如這樣來的簡便且成功率高!
          推薦!

          posted on 2006-09-24 11:24 銀河海盜 閱讀(1583) 評論(0)  編輯  收藏 所屬分類: WEB

          主站蜘蛛池模板: 佛山市| 微山县| 延边| 通河县| 祁连县| 巫溪县| 汉寿县| 安达市| 高州市| 桓仁| 福海县| 松原市| 都昌县| 类乌齐县| 客服| 新巴尔虎左旗| 额尔古纳市| 祥云县| 肃南| 鄂伦春自治旗| 镇江市| 刚察县| 雷山县| 光泽县| 太保市| 西平县| 天长市| 萨迦县| 泰安市| 曲阳县| 晴隆县| 固镇县| 永川市| 南宫市| 三门峡市| 介休市| 奉贤区| 宜城市| 清远市| 剑川县| 嘉峪关市|