我的 DB2 数据库使用 UTF-8 编码。源表有一列包含 UTF-8 文本,如下所示
希腊语:Μπορώ να φάω σπασμένα γυαλιά χωρίς να πάθω τίποτα
捷克语:Mohu jíst sklo, neublíží mi
塞尔维亚语:Ја могу да једем стакло
我的java代码正在这样做(..剪掉不相关的部分..)
ResultSet rs = stmt.executeQuery("SELECT SAMPLE_TEXT FROM UNICODE_TEST");
File file = new File("Unicode.txt");
BufferedWriter outFile = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"UTF8"));
while (rs.next()) {
outFile.write(rs.getString("SAMPLE_TEXT"));
outFile.write( "\n" );
}
我的文件中的结果看起来根本不像源表中的结果。
我得到了这个
希腊语: Μπο ̀̀̀̀̀̀̀̀̀
捷克语 : Mohu jíst sklo, neublá⁄i mi
塞尔维亚语:Ја ÐÐ⁄гÑς да Ñ�едеС
我错过了什么?
最佳答案
你的Java代码没问题。您确定您的文件内容有误吗?例如,如果您的终端错误,您看到的内容可能会出现错误。您能看到该计算机中编码为 UTF-8 的其他文本文件吗? (如果您不确定,请以十六进制阅读,使用 od
获取转储,等等)。如果您确定这不是您的问题,那么我会指出 JDBC 连接中的一些字符集编码设置(没有使用 DB2 的经验)。
关于java - 如何使用 JDBC 查询 UTF-8 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6552279/