由于在使用ORACLE和iReport,但是iReport里面不支持CLOB,我又写了个类,把CLOB字段指定为InputStream,然后通过转换变成String。
英文是可以的,但是中文就不行了,以下是部分代码:public   String   inputStream2String   (InputStream   in)   throws   IOException   { 
    StringBuffer   out   =   new   StringBuffer();
    
    byte[]   b   =   new   byte[4096]; 
    for   (int   n;   (n   =   in.read(b))   !=   -1;)   { 
            out.append(new   String(b,   0,   n)); 
    }       return out.toString();
}怎么做下编码格式的转换?分不多,但是很急,希望大家能帮忙。

解决方案 »

  1.   

    public String object2String (Object in) throws Exception{
    String s = in.toString();
    oracle.sql.CLOB clob = (oracle.sql.CLOB)in;
    String ClobString = "";
    try{
    Reader ClobReader;
    StringBuffer ClobResult = new StringBuffer();
    ClobReader = clob.getCharacterStream();
    BufferedReader ClobBR = new BufferedReader(ClobReader);
    String ClobStr = ClobBR.readLine();
    while(ClobStr != null){
    ClobResult.append(ClobStr);
    ClobStr = ClobBR.readLine();
    }
    ClobString = ClobResult.toString();
    }catch(Exception e){
    e.printStackTrace();
    }

    return ClobString;
    }使用了这个Scriptlet,把CLOB字段的设为Object,然后就好了。