java - 如何使用 JDBC 查询 UTF-8 数据库

标签 java jdbc utf-8

我的 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/

相关文章:

Java - 如何获取结果集上的列名

html - 我可以出于测试目的暂时禁用亚洲字体吗?

java - 为什么 Eclipse 告诉我这是死代码?

java - 单击表从数据库中获取的错误

java - 无法找到或加载 oracle.jdbc.driver.OracleDriver

丹麦语字符串的 JavaScript UTF-8 编码问题

javascript - 将JavaScript字符存储在一个字节中

java - 为什么 Java DatagramSocket 没有收到客户端发送的所有 udp 数据包?

java - Termminate#actor() 和 Termminate#getActor() 有什么区别

java - 谷歌地方 API : How to get photos and place id from latitude and longitude?