TreasureNow
2013-08-09 16:16 阅读 424
已采纳

java 读取 Excel 数据库中文乱码

[code="java"][/code]

  try
  {
   Class.forName(driverName);
   dbConn = DriverManager.getConnection(dbURL, "", "");
   Statement smt = dbConn.createStatement();
   ResultSet set = smt.executeQuery("select * from [sheet1$]");
  int i =0;
   while (set.next())
   {
    System.out.print(i + "\t") ; 
    String str1 = set.getString(1);
    String str2 = set.getString(2);
    String str3 = set.getString(3);
    if (str1 != null){
         System.out.print(new String(str1.getBytes("ISO-8859-1") ,"gbk") + "\t") ; 
    }

    if (str2 != null){
         System.out.print(new String(str2.getBytes("ISO-8859-1") ,"utf-8") + "\t") ; 
    }

    if (str3 != null){
         System.out.println(new String(str3.getBytes("ISO-8859-1") ,"gb2312") + "\t") ; 
    }

    i ++;
   }
  } catch (ClassNotFoundException e)
  {
   e.printStackTrace();
  } catch (SQLException e)
  {
   e.printStackTrace();
  } finally
  {

[img]http://dl2.iteye.com/upload/attachment/0088/0295/95b4bfef-bd6a-38bd-a108-734d678d064e.gif[/img]

中文乱码,求解药 [code="java"][flash=200,200][img][/img][/flash][/code]

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • 已采纳
    xblueskyleng xblueskyleng 2013-08-09 18:20

    new String(set.getBytes(1),"gbk")
    这样呢,用byte取出来

    点赞 评论 复制链接分享
  • zyn010101 zyn010101 2013-08-09 16:35

    确定在数据库中不是乱码么?

    点赞 评论 复制链接分享
  • airballcz airballcz 2013-08-09 16:53

    输出的结果在编码未转之前是什么内容,也是问号?

    点赞 评论 复制链接分享
  • wz_080824101 wz_080824101 2013-08-12 14:41

    从以下几个方面检查你的乱码问题:
    1.数据库中是否是乱码,若是,那就不是程序中的问题了;
    2.从数据库中读取时的链接字段,即你的dbURL,加上useUnicode=true&characterEncoding=gbk试试;
    3.要不将其都改为UTF-8试一试。

    点赞 评论 复制链接分享