2011-07-01 18 views
1

DB2データベースがUTF-8エンコーディングを使用しています。 Μπορώναφάωσπασμέναγυαλιάχωρίςναπάθωτίποτα
チェコ:Mohu JIST sklo、neublížíマイル
セルビア語:Јамогудаједемстакло

ソース表が

ギリシャの下に、これらの線のようなUTF-8のテキストと1 columを持っています 私の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"); 
} 

結果、私のファイル内でのすべてのソース表のようになりません。 私はこの代わりに

ギリシャ取得:ΜποÏώναφάωσπασμÎναγÏ...私±Î»Î¹Î¬Ï‡Ï‰III、ναπΠ¬Î¸Ï‰Ï「II€Î¿Ï「私±
チェコ:Mohu JAST sklo、neublÞÃマイル
セルビア語:DD°Ð¼Ð¾Ð³ÑƒÐ'аÑ~ÐμÐ'ÐμмÑÑ,акло

私は何を欠席しましたか?

+0

varcharの代わりにnvarcharに相当するDB2を使用しているかどうかわかりません。おそらく出力がエンコードされず、Stringクラスを使用して自分でエンコードを再エンコードする必要があります(バイト配列として列を読み込む)。また、UTF-8を使用するためにdb2データベースに設定する必要のあるパラメーターがあるかどうかを調べてください。 @ Luciano。 – Luciano

+0

データベースはまったくUTF-8です。列はvarchar(200)です。ユニコードを意識したSQLクエリツールを使用してコンテンツを取得できるので、コンテンツがUTF-8であることはわかっています。 – user754425

+0

生成されたファイルを表示するためにどのプログラムを使用していますか? – david

答えて

2

Javaコードは問題ありません。あなたのファイルの内容が間違っていますか?たとえば、端末が間違っていると、表示される内容が間違って表示されることがあります。 UTF-8としてエンコードされたそのコンピュータの他のテキストファイルを確認できますか? (あなたが確信が持てない場合は、ヘキサでそれを読んで、odなどでダンプを取得してください)。これがあなたの問題ではないと確信しているなら、私はJDBCコネクションのいくつかのcharsetエンコーディング設定を指しています(DB2の経験はありません)。

+1

あなたは正しいです。 UTF-8をオンにして、Notepad ++の1つのタブに元のテキストがあります。 Javaの結果セットは別のタブにありますが、変換はANSIに設定されているため、文字化けした外観 – user754425

0

使用しているデータベースがわかりませんが、MySQLの場合は接続文字列にcharacterEncoding=UTF-8を追加してみてください。

関連する問題