JDBC访问数据库, set names utf8 无法解决乱码问题.
澳门银河官网
澳门银河官网
当前位置 : 澳门银河官网 > 澳门银河官网网址

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

更新:

总算是解决啦!. 是数据库管理工具的问题. 气死我啦. 浪费了我一个上午.

这件事告诉我们, 学会逐层解决问题是有多重要.

我想直接将set names utf8语句和插入语句一起执行, 加个分号就可以啦.
这样在我的SQL-front上也能正常工作.
但是到了代码了就不行.

后一种, 大概是因为执行了两次, 是不同的SQL语句, 所以无法解决乱码很正常.

求问有什么好的解决方式?

String sql = "set names utf8";
sql += "insert into studentname, age values为龙, 23";
ps.execute; // 报语法错误.

String sql = "set names utf8";
ps.execute;
sql += "insert into studentname, age values为龙, 23";
ps.execute; // 无法解决乱码问题.

java 文件全部用utf-8.

链接地址:

jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=UTF-8"

建表SQL:

CREATE TABLE `student` 
  `student_id` varchar20 COLLATE utf8_bin 
 ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin

出现问题的原因是默认连接的是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了

广告位

澳门银河官网