我的DB2數據庫正在使用UTF-8編碼。源表中有一個科拉姆使用UTF-8文本像下面
希臘這些行:Μπορώναφάωσπασμέναγυαλιάχωρίςναπάθωτίποτα
捷克:莫湖JIST SKLO,neublížíMI
塞爾維亞:Јамогудаједемстакло
我的Java代碼就是做這個(..剪斷不相關的部分。)
如何使用JDBC查詢UTF-8數據庫
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");
}
在我的文件中的結果看上去並不像那些在源表都沒有。 我得到這個代替
希臘:ΜποÏώναI†Î¬Ï‰ÏƒÏ€Î±ÏƒÎ¼ÎναγÏ......我±I»Î¹Î¬Ï‡Ï‰III,ναI€Î ¬Î¸Ï‰I「II€Î¿Ï「I±
捷克:莫湖JAST SKLO,neublÞÃMI
塞爾維亞語:DD°Ð¼Ð¾Ð³ÑƒÐ'аÑ~ÐμÐ'ÐμмÑÑ,акло
我錯過了什麼?
我不知道您是否使用nvarchar而不是varchar的DB2等價物。也許你得到的輸出沒有編碼,你需要使用String類自己重新編碼它(並將列讀作字節數組)。還要檢查是否需要將某些參數設置到db2數據庫以使用UTF-8。 – Luciano
@盧西亞諾。數據庫是UTF-8。該列是一個varchar(200)。我知道內容是UTF-8,因爲我可以使用一個支持unicode的sql查詢工具來檢索它,並且它完全如我所料。 – user754425
你用什麼程序查看生成的文件? – david