-2

特殊文字を避けるために、この文字列 "Dürrnerstrasse 1 Postfach 1463,D-8800 Ansbach" を Java で utf-8 エンコードしたいと考えています。

誰かがここでコードを共有できますか?

String s = rs.getString("address");
byte [] b = s.getBytes("UTF-8");
String newString = new String(b,"UTF-8");

変換後も同じです

4

1 に答える 1

2

あなたの文字列はすでにUTF-8ですが、ISO-8859-1でエンコードされています:

                // D      ü      r    r    n    e    r    s    t    r    a   s    s    e
byte[] rawdata = {68, -61, -68, 114, 114, 110, 101, 114, 115, 116, 114, 97, 115, 115, 101};
                  // 0xC3, 0xBC = "ü" in UTF-8
String s = new String(rawdata, "ISO-8859-1");   // this is what your rs.getString() returns
System.out.println(s);

結果は

Dürrnerstrasse

文字列を UTF-8 として再解釈/再エンコードするs場合は、適切なソース エンコーディングを使用してバイト配列を取得し、UTF-8 宛先エンコーディングで文字列を再作成する必要があります。

byte[] stream = s.getBytes("ISO-8859-1");
String s2 = new String(stream, "UTF-8");
System.out.println(s2);

結果は

Dürrnerstrasse

余談ですが、これが JDBC ResultSet であると仮定するrsと、データベース クライアント/ドライバーを適切に構成することも検討する必要があります。データベースが既に UTF-8 を使用している場合、ドライバーは適切にエンコードされた文字列を返すことができるはずです。アプリケーションでそれらを再エンコードします。

于 2013-03-22T08:15:06.047 に答える