JSP连接mysql数据库导出数据出现中文乱码(问号)
2017-04-14 09:32
513 查看
在学习JavaWeb过程中,总会出现各种各样的中文乱码,而在JSP连接mysql数据库并且导出数据时,会出现中文乱码。
JSP代码如下:
打开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";
然后在打开该网页:
中文数据已经成功显示出来了。
更多详解:
持续更新......
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";
然后在打开该网页:
中文数据已经成功显示出来了。
更多详解:
持续更新......
相关文章推荐
- 用jsp连接mysql数据库,出现中文乱码,该怎么解决啊
- Java、JSP插入数据到MySQL数据库时出现中文乱码的最终解决方案
- 在SQL 2005中用T-SQL插入中文数据时出现的问号或乱码的解决方案 .
- 在mysql数据库插入中文数据出现乱码(利用可视化工具不存在问题)
- C# 中文数据导出CSV出现乱码解决方法
- SSH框架项目+jsp页面+MySQL数据库,数据中文乱码问题解决方案合集
- 在SQL Server 2005(2008)中用T-SQL插入中文数据时出现的问号或乱码的解决方案
- python的sqlaclchemy模块连接mysql数据出现中文乱码问题
- 【Web后端笔记】jsp传递中文数据出现乱码的问题
- c#操作MySQL数据库中文出现乱码(很多问号)的解决方法
- c#操作MySQL数据库中文出现乱码(很多问号)的解决方法
- jsp页面添加中文数据到mysql数据库乱码问题
- 在SQL 2005中用T-SQL插入中文数据时出现的问号或乱码的解决方案
- 在SQL 2005中用T-SQL插入中文数据时出现的问号或乱码的解决方案
- JSP中乱码问题解决(一、JSP页面显示乱码,二、表单提交中文时出现乱码,三、数据库连接出现乱码,四、数据库的显示乱码 )
- jsp连接MySQL数据库显示GIS地理数据乱码问题的解决(select AsText(the_geom))
- 解决jsp插入mysql数据库中的数据出现乱码问题
- PHP获取客户端数据保存到MySQL数据库 出现中文乱码解决方案
- JSON数据在JSP页面上出现中文乱码
- jsp连接MySQL数据库显示GIS地理数据乱码问题的解决(select AsText(the_geom))