我的是程序是将数据库的数据输出至指定格式的xml文件,用的是PrintWriter来输出。
数据库中有全角的“-”,输出至xml文件就成了“?”号,请问我改怎么处理?以下是将sqlserver数据库中的text型字段输出至xml文件中的方法: /**
 * 生成指定字段的数据
 * 
 * @param name
 *            字段名字
 * @param value
 *            输出流用于字段在oracle中是clob类型的字段值,在sqlserver中是text类型的字段值
 * @throws IOException 
 */
protected void generateColumnData(String name, Reader reader) throws IOException {
writer.print("        <column name=\"");
writer.print(name);
writer.print("\">");
StringBuffer dat = new StringBuffer();
if (reader != null) {
int l;
char[] buf = new char[8192];
while ((l = reader.read(buf)) != -1) {
dat.append(buf, 0, l);
}
}
if(dat.length() >0){
writer.print(StringEscapeUtils.escapeXml(dat.toString()));
} else {
writer.print("");
}

writer.println("</column>");
}

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【matrix1984】截止到2008-07-24 09:43:02的历史汇总数据(不包括此帖):
    发帖的总数量:36                       发帖的总分数:1030                     每贴平均分数:28                       
    回帖的总数量:38                       得分贴总数量:9                        回帖的得分率:23%                      
    结贴的总数量:34                       结贴的总分数:1030                     
    无满意结贴数:1                        无满意结贴分:10                       
    未结的帖子数:2                        未结的总分数:0                        
    结贴的百分比:94.44 %               结分的百分比:100.00%                  
    无满意结贴率:2.94  %               无满意结分率:0.97  %                  
    值得尊敬
      

  2.   

    全角字符会占用2个字节。所以你直接使用Reader 的情况下,系统其实帮你处理了这些问题,他不会意识到这是全角字符,所以就有可能出错。
      

  3.   

    出力的字符需要转码 再显示到 XML文件中!
      

  4.   

    你传进 generateColumnData 方法的参数 reader 所属的类是自己写的吗?如果是将它的源代码也贴出来。