您的位置:首页 > 数据库 > MySQL

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

2017-04-14 09:32 513 查看
在学习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";

然后在打开该网页:



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

更多详解:

持续更新......
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐