最近写程序出现了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);
}
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);
}
.getAsciiStream(),"gbk"));
加上字符集看看
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 "";
}
}