当我们用JDBC或者数据源,从数据库中提取数据的时候,往往会遇到这样的困难:我们使用的数据库编码可能与我们网页使用的编码不一致,这就导致我们从数据库中提取的数据在网页中显示出来的是乱码。
我的运行环境仍然是eclipse3.2_Callisto+jdk1.5.0_03+Tomcat v5.5
数据库选用的是MySQL 4.1
出现这种现象的原因是:
我使用的MySQL的JDBC的驱动程序是mysqldrover.jar,这种驱动
程序默认的情况下采用的是ISO-8859-1编码。
google一下,得知ISO/IEC 8859-1,又称Latin-1或“西欧语言”,是国际标准化组织内ISO/IEC 8859的第一个8位字符集。它以ASCII为基础,在空置的0xA0-0xFF的范围内,加入192个字母及符号,藉以供使用变音符号的拉丁字母语言使用。显然这种编码不适合中国字。
所以我们可以采用这种方法得到中文。
举个例子:
我们可以先用MySQL创建一个数据库:
--------------------------------------------------------------------------------------
use mysql;
create database BookDB;
use BookDB;
CREATE TABLE books
(id VARCHAR(8)
PRIMARY KEY,
name VARCHAR(24),
title VARCHAR(96),
price FLOAT,
yr INT,
description VARCHAR(30),
saleAmount INT);
INSERT INTO books VALUES(’201’, ’王芳’,
’Java编程指南’,
33.75, 1999, ’让读者轻轻松松掌握Java语言’, 1000);
INSERT INTO books VALUES(’202’, ’张丙’,
’Weblogic技术参考’, 45.99,
2002, ’真的不错耶’, 2000);
INSERT INTO books VALUES(’203’, ’孙艳’,
’Oracle数据库教程’,
40, 2003, ’关于Oracle的最畅销的技术书’, 2000);
INSERT INTO books VALUES(’204’, ’大卫’,
’从Oak到Java: 语言的革命’,
20.75, 1998, ’很值得一看’, 2000);
INSERT INTO books VALUES(’205’, ’阿明’,
’Apache从入门到精通’,
50.75, 2002, ’权威的Apache技术
资料’, 2000);
INSERT INTO books VALUES(’206’, ’洪军’,
’Java与数据算法 ’,
54.75, 2002, ’权威的Java技术
资料’, 2000);
---------------------------------------------------------------------------------------
接着我们就可以做一个简单的
JSP文件来
查询我们的BookDB了
取名为Dbjsp.jsp
----------------------------------------------------------------------------------------
<!--首先导入一些必要的packages-->
<%@ page import=\"java.io.*\"%>
<%@ page import=\"java.util.*\"%>
<!--告诉编译器使用SQL包-->
<%@ page import=\"java.sql.*\"%>
<!--设置中文输出-->
<%@ page language=\"java\" contentType=\"text/html; charset=GB2312\"%>
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"> [Page]
<html>
<head>
<title>DbJsp.jsp</title>
</head>
<body>
<%
//以try开始
try
{
Connection con;
Statement stmt;
ResultSet&n