最近写程序出现了jdbc读clob数据时出现了乱码,请大家帮忙分析。谢谢。CLOB在ORACLE里是正常的汉字,但是到程序里读完后,就是乱码。 BufferedReader reader = null;
PreparedStatement ps = conn.prepareStatement(sql);
System.out.println(sql);
rs = ps.executeQuery();
if (rs != null && rs.next()) {
Clob clob = rs.getClob("req_msg");// java.sql.Clob类型
reader = new BufferedReader(new InputStreamReader(clob
.getAsciiStream()));
String line = null;
StringBuffer req = new StringBuffer();
while ((line = reader.readLine()) != null) {
req.append(line);
}

解决方案 »

  1.   

    reader = new BufferedReader(new InputStreamReader(clob
    .getAsciiStream(),"gbk"));
    加上字符集看看
      

  2.   

    编码有问题吧,一般选用GB2312,gbk,utf-8等
      

  3.   

    换了个方法就好了,那个方法不行。各种编码都不行。。
    public static String getClobString(Clob c) {
    try {
    Reader reader = c.getCharacterStream();
    if (reader == null) {
    return null;
    }
    StringBuffer sb = new StringBuffer();
    char[] charbuf = new char[4096];
    for (int i = reader.read(charbuf); i > 0; i = reader.read(charbuf)) {
    sb.append(charbuf, 0, i);
    }
    return new String(sb.toString().getBytes("UTF-8"));
    } catch (Exception e) {
    return "";
    }
    }