JDBC读取数据时乱码
本帖最后由 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,不管用,这是源码
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上运行的,没有调试工具。
回帖启示我要用调试,在这里谢谢你们,就不一一回复了。 本帖最后由 小年轻在奋斗 于 2022-7-28 11:30 编辑
看一下你的表结构的字段编码设置,如果是先建表后该的数据库的编码设置,表的编码设置是不会变的;
还有就是看下你IDE设置的控制台输出的编码格式是不是UTF-8 idea 右下角有个编码,你看看切换一下,换成GBK或者UTF-8分别重新执行看看,我感觉应该就是控制台打印显示的问题 感觉是 IDE 控制台编码问题,设置下编码 赞同沙发观点,可以show create table xxx;看一下这个表的实际建表、建字段的编码情况 这个应该属于输出编码的问题,debug一下,看看返回的值是否正常,正常的话就是控制台输出问题,IDE和对应启动器的编码都设置一下就好了 就是说,我是notpad++写的,在控制台运行的啊啊啊
表没有问题,是utf8mb4,数据也无乱码 编码格式有没有问题啊 tencentma 发表于 2022-7-28 14:08
编码格式有没有问题啊
??和这个才有关系吗,用的utf8写的文件,javac -encoding utf8编译的 可以试试重新建数据库,选utf8格式的
为啥不用mybatis之类的框架查询?
页:
[1]
2