-1

eclipseasと asを使用してIDE、取得したアラビア文字を印刷しようとして いるので、アラビア文字の if ???????を印刷したいUnicode

String displayChar(char c) {
    if (c < '\u0010') {
        return "0x0" + Integer.toHexString(c);
    } else if (c < '\u0020' || c >= '\u007f') {
        return "0x" + Integer.toHexString(c);
    } else {
        return c+"";
    }
}

例えば ​​:

displayChar('م'); // output is ?
4

3 に答える 3

2

JavaでUnicode文字を取得する方法はたくさんあります。たとえば、UTF-8で適切にエンコードされたファイルがある場合、次の文字が取得されます。

    try (Reader reader = new FileReader(file, "UTF-8")) {
        // read characters from the reader ...
    }

あなたの更新された質問は、あなたの本当の問題は文字を「取得」することではなく、表示することであると言っているようです。文字を出力する方法場所についてはまだ適切に説明していませんが、問題の原因は次のいずれかであると推測されます。

  • アラビア語フォントがインストールされていない(ありそうもない...)、
  • 文字を表示しているコンソール(または何でも)はアラビア文字を理解していません(ありそうもないようです...)、
  • 文字が壊れています。つまり、Javaプログラムに期待するものではない、または
  • 出力ストリームで間違った文字エンコードを使用しています。

後者が最も可能性の高い説明ですが、適切な診断には、出力ストリーム/ライターを作成して書き込む方法に関する詳細情報が必要です。(ヒント:質問に追加したコードは何も出力しません。文字をJava文字列に変換するだけです。)

于 2012-08-05T13:58:16.800 に答える
0

Java アプリケーションのファイル エンコーディングとバージョン システムが Unicode をサポートしていることを確認してください。たとえば、ファイルを UTF-8 として保存してみてください。そうしないと、エディター ペインに表示されるエンコーディングが失われる可能性があります。最大限の互換性を得るに\u0645は、ソース内のコード ポイントを使用して文字をエンコードする必要があります。

文字を表示するときは、コンソールが Unicode をサポートしていること、および使用しているフォントが文字もサポートしていることを確認してください。

[編集]

ああ、あなたの方法にも小さな更新があります:

public static String displayChar2(char c) {
    if (c < 0x20 || c >= 0x80) {
        return String.format("\\u%04X", (int) c);
    }
    return Character.toString(c);
}
于 2012-08-05T17:53:24.170 に答える
0

Java の文字は単なる数値です。したがって、 が文字の場合は、の値をch実行して出力できます。(これは、コード ポイントと文字の複雑さを無視していますが、アラビア文字については問題ないと思います。)int i = ch;i

于 2012-08-05T13:53:13.277 に答える