数据库读出中文html 乱码,从数据库返回中文乱码问题

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中需要注意的有:

gb2312">

OK,经过上述一些设置之后,JAVA连Mysql将不会再出现中文显示乱码!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值