java向Access添加数据时出现乱码

风影枫林 2010-10-08 05:10:16
我向Access数据库添加中文数据时,添加进去的数据都是乱码。

    
public void editPointConfig(Point point,int id){
try {
String str=new String(point.getName().getBytes("iso-8859-1"),"gbk");
con = AccessUtil.getConn();
String sql = "update point set gnum ='"+point.getGnum()+"',name = '"+str+"',znum = '"+point.getZnum()+"',sid = '"+point.getSid()+"',communicationType = '"+point.getCommunicationType()+"',com = '"+point.getCom()+"',port = '"+point.getPort()+"' where id = "+id+"";
System.out.println(sql);
Statement statement = con.createStatement();
statement.executeUpdate(sql);
} catch (Exception ex) {
java.util.logging.Logger.getLogger(AeccDao.class.getName()).log(Level.SEVERE, null, ex);
}finally{
close();
}
}


请高手指点,要如何转码才能让存到数据库中的数据不是乱码.
...全文
452 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
风影枫林 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhenge1020 的回复:]
连接数据库时指定数据的编码方式。
我觉得也是这个原因
[/Quote]
如何指定编码方式?
风影枫林 2010-10-09
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ace62 的回复:]
Access使用的是gb2312的编码集
[/Quote]

我先把汉字的编码改成gb2312再存进数据库, 还是乱码
ace62 2010-10-09
  • 打赏
  • 举报
回复
Access使用的是gb2312的编码集
ace62 2010-10-09
  • 打赏
  • 举报
回复
情况1: 输出问号 ???
说明转换不对,可看看转换前的值,可能就不需转换

情况2: 直接输入汉字时,存入数据库的是乱码
说明Access的编码与Java当前的编码不一致,需搞清楚Access使用的编码
hayuanjunbudilei 2010-10-09
  • 打赏
  • 举报
回复
检查一下access数据库设计的编码格式,是否和项目中的编码格式相符。最好是能把格式都设置成GBK,GB2312也可以。如果access数据库设置的是utf-8,java编程序中采用的编码是gbk,也可能会导致中文字符出现乱码
风影枫林 2010-10-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ace62 的回复:]
需要分两种情况看,
1.函数外传进来的值是否能正常输出(编码是否正确),可在
String str=new String(point.getName().getBytes("iso-8859-1"),"gbk");
后输出str的值看看

2.直接将汉字写入数据库,是否能正确写入
确认访问数据库时使用的编码是否正确,即在SQL语句中直接用汉字字符串试试
[/Quote]
情况1: 输出问号 ???
情况2: 直接输入汉字时,存入数据库的是乱码
ace62 2010-10-09
  • 打赏
  • 举报
回复
需要分两种情况看,
1.函数外传进来的值是否能正常输出(编码是否正确),可在
String str=new String(point.getName().getBytes("iso-8859-1"),"gbk");
后输出str的值看看

2.直接将汉字写入数据库,是否能正确写入
确认访问数据库时使用的编码是否正确,即在SQL语句中直接用汉字字符串试试
24K純帥 2010-10-09
  • 打赏
  • 举报
回复
数据库的编码格式可能不是GBK的
风影枫林 2010-10-09
  • 打赏
  • 举报
回复
怎么没人回答呢?
suciver 2010-10-09
  • 打赏
  • 举报
回复
String str=new String(point.getName().getBytes("ISO-8859-1"),"gbk");
把这段代码改成
String str=new String(point.getName().getBytes("ISO-8859-1"),"UTF-8");
我用jsp的时候是连接mysql数据库汉字都要通过过滤器UTF-8进行转换的

风影枫林 2010-10-09
  • 打赏
  • 举报
回复
问题还未解决,请大家多多帮忙。
风影枫林 2010-10-08
  • 打赏
  • 举报
回复
如何在连接数据库时指定编码呢?

private static final String URL = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=d:\\data.mdb";
zhenge1020 2010-10-08
  • 打赏
  • 举报
回复
连接数据库时指定数据的编码方式。
我觉得也是这个原因
xiaochun91103 2010-10-08
  • 打赏
  • 举报
回复
连接数据库时指定数据的编码方式。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧