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

    xiaoxiao2021-04-15  34

    在学习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";

    然后在打开该网页:

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

    更多详解:

    持续更新......

    转载请注明原文地址: https://ju.6miu.com/read-671554.html

    最新回复(0)