本人用的是MYSQL数据库,在一个JSP页面提取数据库的一个表格的中文内容时出现乱码,不知道该怎么解决?
用my sql 命令行查询,并能在my sql 命令行能正常显示中文内容,我在navicat下输入数据库表的中文内容
mysql> show variables like "%char%";
+--------------------------+---------------------------------------------------+
| Variable_name            | Value
     
+--------------------------+---------------------------------------------------+
| character_set_client     | gbk
     |
| character_set_connection | gbk
     |
| character_set_database   | gbk
     |
| character_set_filesystem | binary
     |
| character_set_results    | gbk
     |
| character_set_server     | gbk
     |
| character_set_system     | utf8
     |
| character_sets_dir    | C:\Program Files\MySQL\MySQL Server 5.0\share\charsets\ |
+--------------------------+------------------------------------------------------+
8 rows in set (0.16 sec)
JSP页面代码如下,city字段是城市名称如内容“北京”,不知问题出在哪?
<%@ page contentType="text/html; charset=gbk" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%      request.setCharacterEncoding("gbk");
        Class.forName("org.gjt.mm.mysql.Driver").newInstance();
        String url="jdbc:mysql://localhost/hualang?user=root&password=cui007&useUnicode=true&characterEncoding=gbk";
        Connection conn=DriverManager.getConnection(url);
        Statement stmt=conn.createStatement();
        ResultSet  rs=null;
        rs=stmt.executeQuery("select * from tb_ware");
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>无标题文档</title>
</head>
<body>
<%
   while(rs.next()){
  String city= rs.getString("city");         
  out.println(city+"<p>");
}
%>

解决方案 »

  1.   

    试试内码转换public String getGB2312Code(String p_str){
        String ret=null;
        if(p_str==null)
          return p_str;
        try{
          ret =new String(p_str.getBytes("iso-8859-1"),"gb2312");
        } catch(java.io.UnsupportedEncodingException e){
          err_str = e.getMessage();
        }
        return ret;
      }
      

  2.   

    str = new String(str.getBytes("ISO-8859-1"), "GBK");
      

  3.   

    哦,我在navicat my sql看到的是正常中文内容,把my sql数据库设置成gbk,在my sql命令行查询表的内容也能正常显示中文,但到了读取数据库内容都是??
      

  4.   

    问题解决了结贴了,把数据库连接时把characterEncoding=utf-8就能正常显示中文