2008-06-01 16:35:46|  分類: mysql |字號 訂閱

          1.response.setContentType("text/html;charset=gb2312");

          在做servlet的時候,在doGet中已經設定了response.setContentType("text/html;charset=gb2312");

          pw.println("姓名");   
               pw.println("性別"); 
               pw.println("郵箱"); 
               pw.println("地址"); 
               pw.println("權限"); 

          這些漢字的可以正確顯示,但是從數據庫中查詢返回的漢字顯示為亂碼:

          姓名 性別 郵箱 地址 權限
          admin 0 admin@163.com ???????? 1
          user1 0 user1@163.com ???????? 5
          user2 0 user2@163.com ???????? 5
          user3 0 user3@163.com ?????à?? 3
          user4 0 user4@163.com ???????¨ 3
          user5 0 user5@163.com ???????¨ 5
          user6 0 user6@163.com ???????¨ 5

          最近幾天一直都在學JSP,我用的數據庫是Mysql。在連接數據庫的過程中,剛開始我只是簡單的執行了查詢命令,發現從數據庫取出的中文數據全部顯示成了亂碼,查了一些資料之后,我先用了下面的一個轉換函數,值得高興的是,讀出的中文顯示正常:

               

               

               將從Mysql數據庫中得到的中文數據,通過以下轉換函數 String trans(String chi)進行處理,即可正常顯示中文:

              

              String trans(String chi) {

                  String result = null;

                  byte temp[];

                  try {

                      temp = chi.getBytes("iso-8859-1");

                      result = new String(temp);

                  } catch(UnsupportedEncodingException e) {

                      System.out.println(e.toString());

                  }

                  return result;

          }

          但很快,我意識到這種方法只是治標不治本,因為在插入中文數據時,又沒法在Mysql中正常顯示中文。而真正治本的方法是,將Mysql的編碼格式由默認的latin1改成gb2312.

          改的步驟如下:

          1.      設置Mysql的編碼格式(注意是在創建數據庫之前就要設置)

          找到Mysql安裝目錄下的 myini文件,用記事本打開,找到以下兩句:

          [mysql]

          default-character-set=latin1

          --------------------------------------------------------------------------------------------------

          [mysqld]

          # The TCP/IP Port the MySQL Server will listen on

          port=3306

          #Path to installation directory. All paths are usually resolved relative to this.

          basedir="C:/Program Files/MySQL/MySQL Server 5.0/"

          #Path to the database root

          datadir="C:/Program Files/MySQL/MySQL Server 5.0/Data/"

          # The default character set that will be used when a new schema or table is

          # created and no character set is defined

          default-character-set=latin1

                            我們需要做的是將這兩處的默認編碼格式由“latin1”改成“gb2312”。

                            改好之后,重啟Mysql 。

          2.      Mysql中開始創建數據庫

             用相關命令創建數據庫,表等

          注意: 在創建表時要加上一句 TYPE=MyISAM, default character set gb2312;

              

             如以下示例:

              create table student

              -> (sno varchar(20),

              -> sname varchar(10),

              -> sex char(2),

              -> age numeric(2),

              -> dept varchar(20),

              -> primary key(sno))

              -> type=myisam,default character set gb2312;

              

          3.      Java文件或者JSP文件中連接數據庫

             Java代碼中:

          str = "com.mysql.jdbc.Driver";

          url="jdbc:mysql://localhost:3306/example?useUnicode=true&characterEncoding=gb2312";

          user = "root";

          password = "123456";

                      

          Class.forName(str).newInstance();

               conn = DriverManager.getConnection(url,user,password);

             JSP中需要注意的有:

          <%@page contentType="text/html"%>

          <%@page pageEncoding="gb2312" %>

          <%@ page import="java.sql.*,java.io.*" %>

          gb2312">

                       

                       OK,經過上述一些設置之后,JAVAMysql將不會再出現中文顯示亂碼!

          posted on 2013-04-09 16:34 姚先進 閱讀(405) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
           
          主站蜘蛛池模板: 武功县| 睢宁县| 太康县| 清水河县| 乳源| 益阳市| 额尔古纳市| 乐亭县| 陇南市| 郴州市| 江门市| 中西区| 融水| 桃园县| 乌拉特后旗| 柳林县| 辽中县| 义乌市| 阳谷县| 开原市| 琼海市| 平邑县| 林西县| 白银市| 济阳县| 永寿县| 沧州市| 贵州省| 德化县| 江油市| 额尔古纳市| 广南县| 太原市| 江津市| 吐鲁番市| 衡阳市| 定结县| 马关县| 贵南县| 保亭| 南投市|