我有一个Java存储过程,使用 Resultset
对象从表中获取记录并创建CSV文件。
BLOB retBLOB = BLOB.createTemporary(conn, true, BLOB.DURATION_SESSION);
retBLOB.open(BLOB.MODE_READWRITE);
OutputStream bOut = retBLOB.setBinaryStream(0L);
ZipOutputStream zipOut = new ZipOutputStream(bOut);
PrintStream out = new PrintStream(zipOut,false,"UTF-8");
out.write('\ufeff');
out.flush();
zipOut.putNextEntry(new ZipEntry("filename.csv"));
while (rs.next()){
out.print("\"" + rs.getString(i) + "\"");
out.print(",");
}
out.flush();
zipOut.closeEntry();
zipOut.close();
retBLOB.close();
return retBLOB;
但是生成的 CSV 文件没有显示正确的德语字符。Oracle 数据库也具有 UTF8 的 NLS_CHARACTERSET
值。
请建议。
@encoding UTF-8
。我知道这仅适用于ASCII的超集,如UTF-8、ISO 8859-?、MacRoman或CP1252,并且必须在看到任何非ASCII字符之前发生。但这与XML、Perl和Python中的带内编码规范具有相同的限制。我被告知实现这样的注释器不会太难,但除了正则表达式和编码之外,我的Java技能很弱。肯定会很有用,对吧?! - tchrist