9

Windowsコンソールでロシア語とドイツ語の文字を印刷したい。そこで、私はそれがどれほどうまく機能するかを理解するために小さなテストプログラムを書きました:

PrintStream ps = new PrintStream(System.out, false, "UTF-8");
ps.println("öäüß гджщ");

次に、cmd.exeを起動し、フォントをUnicodeをサポートするLucida Consoleに変更し、コードページを「chcp65001」を使用してUnicodeに変更し、プログラムを実行しました。

ドイツ語とロシア語の文字が印刷されましたが、予想よりも少し多くのテキストがありました(赤で下線が引かれています)。 ここに画像の説明を入力してください

ただし、テキストはEclipseコンソールで正しく印刷されます。Windowsコンソールで正しく印刷する方法はありますか?私はWindows7を使用しています。

JNIで問題を解決したばかりですが、純粋なJavaで実行できるかどうかはまだ興味深いです。

4

3 に答える 3

1

ファイルを開くか書き込むたびに、特定のエンコーディングが適用されます。しかし、IDE (あなたの場合は Eclipse) にもエンコーディングがあることを忘れることがあります。

引用符の間に特定のテキストを入力すると、特定のエンコーディング (IDE のエンコーディング) で表示および入力されます。出力ストリームのエンコーディング (UTF-8) によって、テキストがその特定のエンコーディングで表示されることも保証されると想定しています。ただし、ここでも IDE のエンコーディングが適用されると思います。

日食のエンコードを再確認することをお勧めします。おそらく、これで問題が解決する可能性があります。試してみる価値はありますね。:)

グローバル エンコーディング設定の場合、次のコードを eclipse.ini ファイルに追加します。

-Dfile.encoding=UTF-8 

編集:

以下を追加したいと思います。実験として次の手順を実行しました。

  1. Notepad++ を開き、新しいファイルを作成しました
  2. エンコード設定を UTF-8 に変更しました
  3. あなたのロシア語のテキストをコピーし、新しいテキスト ファイルに貼り付けて保存しました。
  4. 次に、Windows コンソール (「cmd」) を開きました。
  5. 「chcp 65001」コマンドを実行しました。
  6. 次に、ファイルの内容をコンソールに出力しました:「type file.txt」
  7. すべてが正しく表示されます。

これは多くのことを確認するものではありませんが、コンテンツが正しいエンコーディングで予見されている場合、DOS が仕事を行うことができるという事実を確認します。

EDIT2:

@ ka3ak 2年以上経ちましたが、Java I/OIに関する本を読んでいるときに、次のことに出くわしました。

System.console().printf(...)System.out.println(...)メソッドよりも特殊文字のサポートが優れています。

PrintStreamストリームをラップするだけなのでSystem.out、同じ制限があると思います。これで問題が解決したかどうか疑問に思っています。それでも問題ない場合は、試してみてください。:)

stackoverflow に関する他の投稿では、同様のことが報告されています: console.writeline および System.out.println

于 2012-12-06T21:38:32.800 に答える