web-dev-qa-db-ja.com

System.out.printlnを使用して特殊文字を表示する

Webサービスからデータベースへの特殊文字を含むテキストの送信または表示に問題があります。私のEclipseでは、文字エンコードをUTF-8に設定しましたが、それでも文字を表示できません。たとえば、以下のコードのような単純な印刷

String test ="привет"; 
System.out.println(test);

OR

String test ="привет";
String query = "insert into communication (`test`) VALUES ('"+ test +"');
PreparedStatement preparedStmt1 = con.prepareStatement(query);
preparedStmt1.executeUpdate();

コンソールの結果と、これを自分のデータベースに送信すると、??????になります。これをコンソールに、できればデータベースに正しく表示するにはどうすればよいですか

15
Amanni

ええ、そのXXI。世紀と私たちはまだ文字エンコーディングのようなことに苦労しています...

私の最初の推測は次のいずれかです:

  1. ソースファイルのエンコーディングが間違っている可能性があります(Mavenなどのビルドツールを使用していますか?ソースエンコーディングをそこに設定する必要がある場合もあります)。
  2. コンソールのエンコードが間違っている可能性があります(Windowsの場合ですか?デフォルトのコマンドラインコンソールは、デフォルトではUTFではなく、ローカルに依存しますが、レジストリを少し変更するだけでエンコードを設定できます)。
  3. dBエンコーディングが正しくない可能性があります(テーブルエンコーディングとは何か、確認できますか?)
1
rlegendi

Eclipseを使用している場合は、

  1. プロジェクトを右クリックします。
  2. プロパティに移動
  3. 「テキストファイルエンコーディング」でUTF-8を選択します

enter image description here

13
Burhan ARAS

これが機能するかどうかを確認します。

    PrintStream out = new PrintStream(System.out, true, "UTF-8");
    out.println(test);

DBに格納する場合は、以下を使用して文字列をUTF-8で明示的にエンコードします

String newString = new String(test.getBytes(), "UTF8");
9
Santosh

最初に文字列をISO-8859にデコードしてから、UTF-8にエンコードする必要があるかもしれません

0
wyk