为了账号安全,请及时绑定邮箱和手机立即绑定

JDBC访问数据库, set names utf8 无法解决乱码问题.

JDBC访问数据库, set names utf8 无法解决乱码问题.

德玛西亚99 2019-03-21 15:19:45
更新:总算是解决啦!. 是数据库管理工具的问题. 气死我啦. 浪费了我一个上午.这件事告诉我们, 学会逐层解决问题是有多重要.我想直接将set names utf8语句和插入语句一起执行, 加个分号就可以啦.这样在我的SQL-front上也能正常工作.但是到了代码了就不行.后一种, 大概是因为执行了两次, 是不同的SQL语句, 所以无法解决乱码很正常.求问有什么好的解决方式?String sql = "set names utf8";sql += "insert into student(name, age) values('为龙', 23)";ps.execute(); // 报语法错误.String sql = "set names utf8";ps.execute();sql += "insert into student(name, age) values('为龙', 23)";ps.execute(); // 无法解决乱码问题.java 文件全部用utf-8.链接地址:jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=UTF-8"建表SQL:CREATE TABLE `student` (  `student_id` varchar(20) COLLATE utf8_bin ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
查看完整描述

1 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

出现问题的原因是默认连接的是gbk编码

解决方案如下:
找到mysql配置文件my.cnf,然后配置如下:

客户端配置[client] 在下面添加
default-character-set=utf8 //默认字符集为utf8
在找到[mysqld] 添加
default-character-set=utf8 //默认字符集为utf8
init_connect='SET NAMES utf8' //(设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行)

然后重启一下mysql,再运行下刚才的命令,都是utf-8后,在java程序中可以直接使用insert into 就不用前面那个set names了


查看完整回答
反对 回复 2019-04-25
  • 1 回答
  • 0 关注
  • 700 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号