好友
阅读权限10
听众
最后登录1970-1-1
|
x0710
发表于 2022-7-28 10:51
本帖最后由 x0710 于 2022-7-28 14:11 编辑
下面是数据库的配置
+--------------------------+---------------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.5\share\charsets\ |
+--------------------------+---------------------------------------------------------+
表的编码是utf8mb4
这个是在命令行上查询的数据
+------+----------------------------------+
| word | translation |
+------+----------------------------------+
| this | pron. 这, 本
a. 这, 本
adv. 这么 |
+------+----------------------------------+
JDBC一连接就乱码了。连接url后面有?characterEncoding=utf-8,不管用,这是源码
[Java] 纯文本查看 复制代码 String url = "jdbc:mysql://localhost:3306/calture?characterEncoding=utf-8";
try{
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
c = DriverManager.getConnection(url, user, password);
}
catch(Exception e) {
System.out.println(e);
}
Statement s = null;
try{
s = c.createStatement();
ResultSet rs = s.executeQuery("SELECT * FROM enwords WHERE word='this'");
while(rs.next()) {
String word = rs.getString("word");
String translation = new String(rs.getString("translation"));
System.out.println("word: "+word);
System.out.println("translation: "+translation);
}
}
catch(Exception e) {
System.out.println(e);
}
finally{
s.close();
}
下面这个是JDBC查询的结果(默认应该是UTF-8)
word: this
translation: pron. 脮芒, 卤戮
a. 脮芒, 卤戮
adv. 脮芒脙麓
转码后的(JDBC结果用GBK编码的)
word: this
translation: pron. ??, ±?
a. ??, ±?
adv. ????
求帮助,百度的方法都试遍了。
Ps我是记事本写的,cmd上运行的,没有调试工具。
回帖启示我要用调试,在这里谢谢你们,就不一一回复了。 |
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|