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,经过上述一些设置之后,JAVA连Mysql将不会再出现中文显示乱码!