19

System.outを使用してUnicode文字(♠)を書き込もうとしていますが、代わりに疑問符が出力されます。

疑問符の代わりに適切なUnicode文字を表示するにはどうすればよいですか?

WindowsでIntelliJIDEAを使用していて、IDE内から印刷しようとしています。

4

8 に答える 8

21

Help>に移動しEdit Custom VM options...、次のオプションを追加します。

-Dconsole.encoding=UTF-8
-Dfile.encoding=UTF-8

両方が必要かどうかはわかりませんが、うまくいきました。変更を適用するには、IntelliJを再起動する必要があります。

Intellijですべてのエンコード設定を変更し、Gradleでそれらのオプションを設定し、システムエンコーディングを変更しようとしましたが、これが機能した唯一の設定です。

于 2019-11-16T01:58:53.380 に答える
15

2015年のちょっとした更新

TL; DR回答:

Settings-> Editor-> File Encodings->に移動しProject Encoding、「UTF-8」に設定します。

拡張された答え:

それが機能しない理由は、System.out.print()呼び出しにブレークポイントを設定することで見つけることができます。ブレークポイントがヒットしたら、に追加System.outできます。これは、または同様に不適切なものに設定されWatchesていることがわかります。System.out.textOut.out.se.cswindows-1252

私のために魔法のように働いた設定(理由はわかりません)はSettings-> Editor-> File Encodings->にありProject Encodingます。これを「UTF-8」に設定する必要があります。

次に、Unicode文字がコンソールに正しく表示され、デバッガーでもう一度簡単に見ると、の値System.out.textOut.out.se.csが魔法のようにに変わっていることがわかりUTF-8ます。

System.outアプリケーションの起動/デバッグ時にインスタンス化される文字セットにエディター設定がどのように、そしてなぜ影響するのかわからないため、「魔法のように」と言っています。誰かがこの背後にある論理が何であるかを知っているなら、教えてください!

于 2015-04-02T21:16:52.877 に答える
6

ファイルエンコーディングは正しく構成されていますか?「設定|ファイルエンコーディング」がUTF-8を使用していることを確認してください。IDEエンコーディングがあり、すべてのファイルがUTF-8に設定されている場合、印刷♠は機能します。エンコーディングを変更した後、再コンパイルが必要になる場合があります。

于 2009-07-04T15:06:18.693 に答える
2

System.outは、基盤となるオペレーティングシステムのデフォルトのエンコーディング(通常はISO-8859-1またはUTF-8)を使用します。1つ目は、XPでの1252コードページで私が持っているものです。

これはCMD.EXEウィンドウにありますか、それともIDE内にありますか?

于 2009-07-04T14:56:03.723 に答える
1
  1. @Mike Nakisが回答で言ったことを、[設定]に移動してプロジェクトのエンコーディングを変更してください。

  2. 私の場合、追加の手順を実行する必要がありました。

IntelliJIDEAの右下隅にあるUTF-8へのエンコーディングの切り替え ここに画像の説明を入力してください

クラスに別のエンコーディングでテキストを貼り付けた場合(私の場合、ブラウザからキリル文字のブロックを貼り付けた場合)、フォーマットが醜くなりますが、問題ありませんそれを削除し、UTF-8に切り替えた後、元に戻します。

于 2018-12-24T14:39:08.213 に答える
0

最終的にWindowsの標準コマンドラインで広範囲のUnicode文字を印刷したい場合は、少し作業が必要です。デフォルトのラスターフォントは文字をサポートしません。アプリケーションは通常、UnicodeコンソールAPIを呼び出して文字をレンダリングする必要があります。Javaはそうではありません-最初に文字をネイティブ文字セットにエンコードし(不可逆プロセス)、次にANSI呼び出しを使用してそれらを出力します。ひどい詳細が必要な場合は、このブログ投稿を読むことができます。

于 2009-07-04T16:19:10.163 に答える
0

設定が正しく構成されていません。ファイルエンコーディングがUTF-8、特に「デフォルトのエンコーディングプロパティファイル」に設定されていることを確認してください。私の側では、デフォルトのエンコーディングを変更するまで、以下の手順は機能しませんでした。

Intellij 2017.3.1(Community Edition)ファイルについて| 設定| エディター>ファイルエンコーディング。下のリンクをクリックして設定画像をご覧ください

Intellij 2017.3.1(コミュニティエディション)

于 2018-03-13T07:17:28.523 に答える
-1

マシンに適切なフォントがインストールされていますか?疑問符は、出力する文字のフォントがない場合に表示されます。

また、?を実行して出力していSystem.out.println("<your string>")ますか?もしそうなら、フォントをインストールするだけでうまくいくはずです。

System.outプログラム内から書き込もうとしている場合は、それは異なります。OutputStreamWriter文字ストリームである、を使用する必要があります。のようなバイト指向のストリームに書き込むことはできませんOutputStream

OutputStreamWriterのようなサブクラスのAPIとクラスリファレンスを検索しPrintWriterます。コンストラクターのロケールを指定してコンストラクターを作成します。例えば、

PrintWriter pw = new PrintWriter(System.out, "UTF-8");

于 2009-07-04T15:49:14.863 に答える