私は、間違ってエンコードされた (または破損した) 文字列 ( ) を提供している外部 Web サービスを扱っていUTF-8
ます。素敵なA帽子()がたくさんあります。ISO LATIN
WINDOWS-1252
UTF-8
Â
外部 Web サービスが文字列を保存する方法を明らかに修正できないため、情報が失われます。したがって、私が知っている 100% の翻訳を期待することは不可能です。
しかし、誰かがヒューリスティックな文字マッピング ライブラリを Java で作成したことを期待していました (誰かが A ハットを入力する可能性は低いです)。
そうでない場合は、この人の PHP コードを移植できると思います: https://stackoverflow.com/a/3521340/318174
更新と説明: @VGR のような単純な変換は機能しません。元のバイトがありません。エンドポイントでデータが正しく変換されませんでした (SOAP サーバーgetBytes(/*with out correct encoding*/)
が完了したか、データが正しくない形式で保存されている可能性があります)。Java でバイトを文字列に逆変換すると、エンコーディングがどこでも同じでない限り、データは保持されません。ASCII
これは<->のようなものを考えてみるとわかりやすいですUTF-8
。データが失われることはありませんが、混乱することが多いため、Windows-1252
またはISO Latin
それははるかに複雑です。これは、これらのエンコーディングが 2 バイトである可能性があり、のサブセットではないためですUTF-8
。
信じられない場合はgetBytes()
、さまざまなエンコーディングを試してみると、データの破損やデータの損失が見られます。