/ / u 00ffの後のJava Unicode文字-java、eclipse、unicode

u 00ff後のJava Unicode文字 - java、eclipse、unicode

00ffの後にUnicode値を出力することはできません。代わりに、Eclipseでこれを実行した後に「?」文字が表示されます。これは期待できる動作ですか?

System.out.println("u01ff");

回答:

回答№1は5

Eclipseは、デフォルトでプラットフォームのデフォルトのエンコード(Windowsではcp1252)を使用して、テキストベースのファイルの保存中および標準出力ストリームへの書き込み中に文字をデコードします( System.out)。世界支配を達成するには、明示的にutf-8に設定する必要があります。

ここに画像の説明を入力

この方法では、これらを使用する必要もありません。 uXXXX Unicodeは、テキストベースのソースファイルでこれらの文字を表すためにもうエスケープします。

これらの疑問符は、出力ストリームで使用される文字セットが入力ストリームで指定されている文字をサポートしていないために発生します。

参照:


回答№2の場合は3

問題は、使用されるエンコーディングです System.out;デフォルトでは、「プラットフォーム」のネイティブエンコーディングです(通常はutf-8ではありません)。ストリームを置き換えることにより、エンコードを明示的に変更できます。

try {
PrintStream ps = new PrintStream(System.out, true, "utf-8");
System.setOut(ps);
} catch (UnsupportedEncodingException error) {
System.err.println(error);
}

この後(基本環境でのフォントまたはエンコードの問題がなければ)、すべてのUnicode文字が正しく印刷されるはずです。 System.out.

EDIT 私とBalusCの間の行き来に基づいて 彼の答え、これは、Eclipse内で物事を機能させるのに十分ではありません(または必要ですら)。そこには、解決すべき2つの問題があります。 System.out 正しいエンコードを使用する場合Eclipseコンソールビューでコンソール出力を表示します。 BalusCの答えは、これら両方の問題に対処しています。残念ながら、Eclipse以外での実行には対処しません。そのためには、上記の私のアプローチを使用するか、デフォルトのランタイムエンコーディングを設定する必要があります。これは、フラグを使用して行うことができます -Dfile.encoding=utf-8 コマンドラインまたは環境変数の設定 JAVA_TOOL_OPTIONS 含める -Dfile.encoding=utf-8。 Eclipseの外でコードを正常に実行するには、おそらくそれが最善のアプローチです。


回答№3の場合は0

Javaはこれらの文字をうまく処理できます。ただし、出力チームには特定のエンコーディングがあります。

そして、そのエンコーディングがutf-8のようなものでない限りまたはUTF-16の場合、「すべての文字をUnicodeでエンコードすることはできません。表現できない文字を検出すると、疑問符に置き換えられます。


回答№4の場合は0

JVMは、デフォルトのファイルエンコーディングを使用して System.out 同じように。

たとえば、Linuxの場合、 $LANG 変数がに設定されている de_DE.utf-8の値 file.encoding それに応じて派生し、に設定されます utf-8.

JVMが必要な設定を取得できない場合は、システムプロパティを設定してファイルエンコーディングを変更できます。

java -Dfile.encoding = utf-8 ...

コマンドラインで

あなたもこれを行うことができます Eclipse を使って 設定を実行する (コンテキストメニュー-実行-実行構成...-引数-VM引数)

したがって、これはコマンドラインと Eclipse、ソースでエンコードを明示的に定義する必要はありません。


値が

java -Dfile.encoding = iso-8859-1

たとえば、Unicode文字のサブセットのみを表現できます。これは、その文字セットが限られた数の文字しかサポートしていないためです。他のものは次のようになります ?.


心に留めておくべき2つの他のものがあります:

  • ストリームを受信するデバイス(端末、シェルなど)は、それを正しくデコードする必要があります。たとえば、GNOMEの端末に関しては、メニューで文字エンコーディングを設定できます。

  • その端末などで使用されているフォントには、この文字のグラフィック表現が含まれている必要があります