2012-02-28 5 views
1

これはイライラしています。次のプログラムを実行すると、 "Garcí a"の代わりに "Garci?a"が表示されますが、Eclipseデバッガで実行すると、garciaStringに "Garcí a"が含まれています。どうしたの? System.outの問題ですか? Unicodeを印刷するために特別に設定する必要がありますか?Java + unicode +(コンソールおよび/またはSQL)=失敗?

package com.example.unicode; 

public class UnicodeTest { 
    public static void main(String[] args) { 
     String garciaString = "Garci\u0301a"; 
     System.out.println(garciaString); 
    } 
} 

編集:私は、コンソールがあるため、フォントの正しい値が出力されないかもしれない考え出しました。しかし、私はまた、 "Garci?a"をSQLデータベースに挿入しました。 JDBC + SQLはUnicodeを処理しますか?そうでない場合、どうすればINSERT INTO mydb (id, name) VALUES (1, "Garci\u0301a")を処理できますか?

+0

としてユニコードハンドリングエディタで結果を提出し、確認するために、標準出力を指示することができますか?その場合、問題は、実行しているコマンドラインがUnicodeをサポートしていないということです。 –

+0

'name'はnvarcharまたはvarcharですか? –

+0

MySQLのVARCHAR(4096) - 以前はnvarcharについて聞いたことがありません。 Darnit。 –

答えて

3

これは、EclipseコンソールがUTF-8エンコーディングを使用していないことを意味します。あなたは設定でそれを変更する必要があります。 Getting Unicode output in Eclipse Consoleおよびthisの記事を参照してください。

+0

どこを変更しますか? –

+0

これまでにこの問題に遭遇しました。 [Eclipse - コンソール出力のエンコーディングを変更する方法](http://decoding.wordpress.com/2010/03/18/eclipse-how-to-change-the-console-output-encoding/)のリンクを参考にしてください。 –

+0

@NathanFegerが投稿を更なる詳細で更新しました –

1

Eclipseコンソール/システムコンソールなどに問題があります。JavaはUnicode上で内部的に動作しますが、出力にはもっとトリックがあります。

通常、ファイルに出力する場合は、常にOutputStringWriterを使用してください。適切なエンコーディングを指定しますが、System.outに出力するときは、オペレーティングシステム定義の動作が必要です。 Eclipseコンソールが設定されている可能性があります.Windowsコンソールを使用すると難しくなります。あなたはいつもあなたは、コマンドラインウィンドウを意味しています「コンソール」を言うとき、そのようなgeditのまたはメモ帳++

関連する問題