排骨学长(\t) 2023-11-05 15:34 采纳率: 43.5%
浏览 6
已结题

java读取sqlite数据某个字段乱码


    public void findAll() throws SQLException, UnsupportedEncodingException {
        Statement statement = connection.createStatement();
        ResultSet resultSet = statement.executeQuery("SELECT * FROM note_contents");

        while (resultSet.next()) {
            System.out.println(new String(resultSet.getBytes("content"),"UTF-8"));
        }
        resultSet.close();
        statement.close();
        connection.close();
    }

在可视化工具和shell命令查询不乱码,java查询乱码

img

  • 写回答

2条回答 默认 最新

  • 老牛毕设 2023-11-05 15:42
    关注

    确认Java程序读取数据的编码是否正确。在你的代码中,你使用了"UTF-8"编码来解码从数据库中获取的字节数据。如果数据库中的数据不是UTF-8编码,那么解码就会出现问题。你需要知道数据库的真正编码,并将其替换到代码中。

    假设你的数据库使用的是UTF-16编码,你可以尝试以下修改:

    public void findAll() throws SQLException, UnsupportedEncodingException {  
        Statement statement = connection.createStatement();  
        ResultSet resultSet = statement.executeQuery("SELECT * FROM note_contents");  
      
        while (resultSet.next()) {  
            System.out.println(new String(resultSet.getBytes("content"),"UTF-16")); // 修改这里的编码为UTF-16  
        }  
        resultSet.close();  
        statement.close();  
        connection.close();  
    }
    
    

    如果这个修改还不能解决你的问题,你可能需要进一步检查你的数据、数据库和程序是否有其他问题。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月7日
  • 创建了问题 11月5日

悬赏问题

  • ¥15 c++2013读写oracle
  • ¥15 c++ gmssl sm2验签demo
  • ¥15 关于模的完全剩余系(关键词-数学方法)
  • ¥15 有没有人懂这个博图程序怎么写,还要跟SFB连接,真的不会,求帮助
  • ¥30 模拟电路 logisim
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音