我的MYSQL数据库中有一表tablea 其中字段name 为中文数据
tablea 的编码为系统默认的latin1_swedish_ci
在PHP中读写都正常
但是到了JAVA中不能正常显示
使用getByes转换却发现有些汉字转换不过来~555555555555
Statement stmt;
ResultSet rst;
stmt=conn.createStatement();
rst=stmt.executeQuery("select name from tablea where id=346");
while(!rst.isLast()){
rst.next();
System.out.println("name:"+new String(rst.getString("name").getBytes("ISO-8859-1"),"UTF-8"));
}
这是我写的代码
正常输出应该是:
name:电脑硬件
而实际输出为:
name:�??��??硬件该怎么转呢?
tablea 的编码为系统默认的latin1_swedish_ci
在PHP中读写都正常
但是到了JAVA中不能正常显示
使用getByes转换却发现有些汉字转换不过来~555555555555
Statement stmt;
ResultSet rst;
stmt=conn.createStatement();
rst=stmt.executeQuery("select name from tablea where id=346");
while(!rst.isLast()){
rst.next();
System.out.println("name:"+new String(rst.getString("name").getBytes("ISO-8859-1"),"UTF-8"));
}
这是我写的代码
正常输出应该是:
name:电脑硬件
而实际输出为:
name:�??��??硬件该怎么转呢?
解决方案 »
- “只看楼主”功能用java实现吗?
- Applet里面的按扭不见了
- 为什么向数据库里添加datetime类型数据会报错啊?
- 【求助】有关BufferesStream流中 读写是否需要刷新缓冲区的问题
- 初学java异常处理的问题
- java的getClass()的问题
- ant使用问题,如何将用到的目录打进jar文件包
- 在 F:\a\ 下创建一个文件夹b,用什么函数?
- 我想问一问,那里有java的函数下载(自带的内部函数,就好像VB的date(),我的书上没有,是不是Java没有这种函数的概念)
- 请问使用西门子6688手机的朋友关于支持java:
- 在线等:用那个函数获取客户端发来的UDP报文的IP地址和端口号?
- getitem和getitemselectable之间有什么区别呢?
name:�??��??硬件
~^~ 被CSDN转义了
实际结果就是电脑两个字变成乱码了
System.out.println("name:"+new String(rst.getString("name").getBytes("ISO-8859-1"),"gbk"));
试试行不~~
换成GBK也是乱码
你连SQL的代码贴出来看下
表和字段的编码都是latin1_swedish_ci
连接代码:
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/mysearch?user=root&password=123456");
我发现用outputstreamwriter输出正确但是我不知道怎么从outputstream写到String里面?
OutputStreamWriter out =new OutputStreamWriter(System.out,"utf-8");
byte[] bytes;
while(!rst.isLast()){
rst.next();
bytes=rst.getBytes("name");
out.write(new String(bytes));
//System.out.println("name:"+new String(rst.getString("name").getBytes("ISO-8859-1"),"UTF-8"));
}
out.flush();
out.close();这样写控制台输出居然是对的