gpt4 book ai didi

java - 无法将带有准备好的语句的utf-8字符插入mysql

转载 作者:可可西里 更新时间:2023-11-01 08:47:52 26 4
gpt4 key购买 nike

我在使用这样的准备语句插入 utf-8 字符时遇到问题:

    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/tournament_system?"
+ "user=root&password=root");

java.sql.PreparedStatement ps = conn
.prepareStatement(" insert into PLAYER (ID, NAME, SURNAME, CLUB, WORLD_RANKING, USER_ID) VALUES(?, ?, ?, ?, ?, ?)");
ps.setInt(1, 100001);
ps.setString(2, "ěščřž");
ps.setString(3, "xxx");
ps.setString(4, null);
ps.setInt(5, 5);
ps.setInt(6, 1);
ps.executeUpdate();

它只是这样插入到列名中:“?š??ž”

但是当我像这样在 phpMyAdmin 中执行 sql 时:

INSERT INTO `tournament_system`.`PLAYER` (`ID`, `NAME`, `SURNAME`, `CLUB`, `PLAYER_DISCRIMINATOR`, `WORLD_RANKING`, `USER_ID`) VALUES ('10002', 'ěščřž', 'qqq', NULL, 'qqq', NULL, '1');

效果不错

那么问题出在哪里呢?如果第二个选项有效,我想我已经正确配置了我的数据库

MySQL版本:

Server: Localhost via UNIX socket
Server version: 5.5.34-0ubuntu0.12.10.1
Protocol version: 10
User: root@localhost
MySQL charset: UTF-8 Unicode (utf8)

更新:

当我尝试这样做时:ps.setBytes(2, "ččřž".getBytes("UTF-8"));然后就可以了,但我真的不能把我所有的 ps 都改成这个。否则如何解决?

最佳答案

您可以使用 characterEncoding=UTF-8 将编码添加到您的 jdbc 连接字符串中,这将对 PreparedStatement 生效:

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/tournament_system?"
+ "user=root&password=root&characterEncoding=UTF-8");

关于java - 无法将带有准备好的语句的utf-8字符插入mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22828995/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com