mysql字符集是utf8,eclipse也是utf-8,jdbc也是utf-8,为什么还是乱码?

mysql字符集是utf8,eclipse也是utf-8,jdbc也是utf-8,为什么还是乱码?

http://img1.sycdn.imooc.com//climg/5eda61fa098da00006770442.jpg

http://img1.sycdn.imooc.com//climg/5eda61fa095c825509720597.jpg

http://img1.sycdn.imooc.com//climg/5eda61fa09923a4b08120728.jpg

http://img1.sycdn.imooc.com//climg/5eda61fb09ebc92a14370284.jpg


package com.imooc.jdbc.demo1;


import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;


import org.junit.Test;


import com.mysql.jdbc.Driver;


public class JDBCDemo1 {


@Test

/*

* jdbc的入门程序

* */

public void demo1(){

try {

//1.加载驱动

DriverManager.registerDriver(new Driver());

//2.获得链接

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbctest?characterEncoding=utf-8", "root", "root123");

//3.创建执行SQL语句的对象,并执行SQL

//3.1创建执行SQL的对象

String sql = "select * from user";

Statement stmt = conn.createStatement();

//3.2执行SQL

ResultSet resultSet = stmt.executeQuery(sql);

while(resultSet.next()) {

int uid = resultSet.getInt("uid");

String username = resultSet.getString("username");

String password = resultSet.getString("password");

String name = resultSet.getString("name");

 

System.out.println(uid+" "+username+" "+password+" "+name);

}

//4.释放资源

resultSet.close();

stmt.close();

conn.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕阿满 2020-06-07 10:20:51

同学你好,可能是数据库中的字段使用的不是utf8字符集编码,建议同学使用如下命令查看一下:

 show create table user;

如果有字段的字符集编码使用的不是utf8,可以使用如下命令修改一下:

alter table user modify name varchar(20) character set utf8;

祝:学习愉快~

好帮手慕小尤 2020-06-06 11:35:11

同学你好,测试代码并未复现此问题,如下图所示:

http://img1.sycdn.imooc.com//climg/5edb0dc509bbff0e03190081.jpg

建议同学查看,添加到数据库中的是否乱码,如果是,同学可以使用show variables like 'character%';命令查看一下编码是否是utf8,如:

http://img1.sycdn.imooc.com//climg/5edb0e3e093f698c04500258.jpg

如果不是,同学可以使用set语句进行修改,如:set character_set_server=utf8;当修改完成后,可以先删除数据库,重新创建数据库,最后进行测试。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

  • 提问者 慕粉1465475474 #1
    但是,我输入修改为相关utf8的以下代码: set character_set_client=utf8; set character_set_connection=utf8; set character_set_database=utf8; set character_set_results=utf8; set character_set_server=utf8; insert into user values (null,'aaa','111','张三'); 却报错。显示 Incorrect string value: '\xD5\xC5\xC8\xFD' for column 'name' at row 1, 现在新的问题产生了,中文又不能插入mysql数据库了,老师,帮帮忙
    2020-06-07 00:07:34
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师