JSP连接mysql数据库导出数据出现中文乱码(问号)

在学习JavaWeb过程中,总会出现各种各样的中文乱码,而在JSP连接mysql数据库并且导出数据时,会出现中文乱码。

JSP代码如下:

<%@ page contentType="text/html" pageEncoding="GBK" %>
<%@ page import="java.sql.*"%>
<html>
	<head><title>www.mldn.com</title></head>
	<body>
		<%!
			//定义数据库驱动
			public static final String DBDRIVER="org.gjt.mm.mysql.Driver";
			//数据库连接地址
			public static final String DBURL="jdbc:mysql://localhost:3306/mldn";
			public static final String DBUSER="root";
			public static final String DBPASS="mysqladmin";

		%>
		<%
			Connection conn = null;
			PreparedStatement pstmt = null;
			ResultSet rs = null;
		%>
		<%
			try{
				Class.forName(DBDRIVER);
				conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
				String sql = "SELECT empno,ename FROM emp";
				pstmt = conn.prepareStatement(sql);
				rs = pstmt.executeQuery();
		%>
		<center>
			<table border="1" width="80%">
				<tr>
					<td>雇员编号</td>
					<td>雇员姓名</td>
				</tr>
				<%
				while(rs.next()){
					int empno = rs.getInt(1);
					String ename = rs.getString(2);
					System.out.println(ename);
				%>
				<tr>
					<td><%=empno%></td>
					<td><%=ename%></td>
				</tr>
				<%
					}
				%>
			</table>
		</center>
		<%
		}catch(Exception e){
			System.out.println(e);
		}finally{
			rs.close();
			pstmt.close();
			conn.close();
		}
		%>
	</body>
</html>

打开Tomcat,在本地服务器上打开JSP后,会出现如图中文乱码:

同时,在将获取的数据输出到Tomcat服务器上进行观察。


输出的同样是问号。

根据网上的方法,修改mysql配置中的my.ini的服务器和客户端的default-character-set为utf8,结果仍然是输出??????。


现在来看看mysql的charset情况:

输入show variables "character%";和show variables "%colla%";  查看如下图:



可以观察到,character_set_database latin1和collation_server这两项都没有变为utf8,这就是问题的所在。

为了避免这种情况,有两种方法可以解决问题。


方法一:修改character_set_database和collation_server这两项。

输入:(此处以数据库mytest为例)ALTER DATABASE mytest DEFAULT CHARACTER SET utf8; 修改 character_set_database


然后输入:ALTER DATABASE mytest DEFAULT COLLATE utf8_general_ci;


这样就修改成功了。


可是,当如果Bruis数据库中的DEFAULT CHARSET=latin1 时,仍然会出现中文问号。可以输入show create table Bruis.emp;查看。

(这里本人用的数据库为Bruis,数据库mytest为用于测试)



方法二:可以通过在创建数据库与建表时,就设置charset为utf8。

进入dos界面,net start mysql(开启mysql)——>mysql -uroot -pmysql(进入mysql指令)——>

CREATE DATABASE Bruis

CHARACTER SET 'utf8'

COLLATE 'utf8_general_ci';

——>

CREATE TABLE emp(

emp INT(4) PRIMARY KEY,

ename VARCHAR(10)

) ENGING=InnoDB DEFAULT CHARSET=utf8;

如下图:


以上两种方法弄好之后,还需要设置一下character_set_results:


而character_set_results的修改可以通过输入:SET NAMES utf8或者(gbk);就可以实现。

修改之后如图:



以上都弄好之后

然后再在JSP如下代码中修改数据库为Bruis(本人使用的是数据库Bruis)

public static final String DBURL="jdbc:mysql://localhost:3306/Bruis";


然后在打开该网页:


中文数据已经成功显示出来了。

更多详解:

持续更新......

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值