1

UTF8 文字列を読み取り可能な文字列に変換する方法。

Like : ⬠(UTF8) は €

Charset を使用してみましたが、機能しませんでした。

4

5 に答える 5

1

Javaの文字列は、すでにUnicode表現です。その上でgetBytesメソッドの1つを呼び出すと、特定のエンコーディング(例ではISO-8859-15)でエンコードされた表現(バイト、つまりバイナリ値として)を取得します。このバイト配列をUnicode文字列に戻す場合は、文字列コンストラクターの1つを使用して、バイト配列を受け入れることができますが、バイト配列が最初に生成されたのとまったく同じエンコーディングを使用して行う必要があります。そうして初めて、それをユニコード文字列に戻すことができます(エンコードがなく、エンコードは必要ありません)。

文字列コンストラクターとgetBytesメソッドの両方のエンコードなしのメソッドに注意してください。これらは、コードが実行されているプラ​​ットフォームのデフォルトのエンコードを使用するため、達成したいものではない可能性があります。

于 2013-02-22T08:21:37.357 に答える
1

文字列を ISO-8859-15 にエンコードしbyte[] b = "Üü?öäABC".getBytes("ISO-8859-15");てから、 UTF-8 でデコードしていますSystem.out.println(new String(b, "UTF-8"));。ISO-8859-15 と同じ方法でデコードする必要があります。

于 2013-02-22T08:18:03.740 に答える
1

「ISO-8859-15」でエンコードされた byteArray を「UTF-8」形式でデコードしようとしています

        b = "Üü?öäABC".getBytes("ISO-8859-15");
        u = "Üü?öäABC".getBytes("UTF-8");

    System.out.println(new String(b, "ISO-8859-15")); // will be ok
    System.out.println(new String(b, "UTF-8")); // will look garbled
    System.out.println(new String(u,"UTF-8")); // will be ok
于 2013-02-22T08:18:30.960 に答える
1

This is not "UTF-8" but completely broken and unrepairable data. Strings do not have encodings. It makes no sense to say "UTF-8" string in this context. String is a string of abstract characters - it doesn't have any encodings except as an internal implementation detail that is not our concern and not related to your problem.

于 2013-02-22T08:19:39.180 に答える
0

ここでの問題は、コンストラクターで指定したものを使用してJava文字列がエンコードされていると想定していることだと思います。 そうではありません。 UTF-16にあります。

つまり、"Üü?öäABC".getBytes("ISO-8859-15")実際にはUTF-16文字列をISO-8859-15に変換し、そのバイト表現を取得しています。

Eclipseコンソールで人間が読める形式を取得したい場合は、そのまま(UTF-16で)そのままにして、を呼び出しますSystem.out.println("Üü?öäABC")。これは、Eclipseコンソールが文字列をデコードしてUTF-16として表示するためです。

于 2013-02-22T08:22:00.117 に答える