更新:总算是解决啦!. 是数据库管理工具的问题. 气死我啦. 浪费了我一个上午.这件事告诉我们, 学会逐层解决问题是有多重要.我想直接将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了
添加回答
举报
0/150
提交
取消
