0

DB に保存し、テキスト ビューで表示するか、テキストを編集する JSON 応答があります。この json レスポンスは UTF-8 形式でエンコードされています。

応答は次のようなものです

 "currencies": [[0,"RUR"," ",1,0],[1,"EUR","â¬",1.44,100],[2,"GBP","£",1.6,100],[3,"JPY","Â¥",0.0125,100],[4,"AUD","$",1.1,100]]}

ここで、â¬、£、Â¥ は通貨記号です。これをデコードしてから表示する必要があります。この記号は Unicode の記号です (UTF8 として転送されます)。このエンコードされたシンボルを変換するにはどうすればよいですか。助けてください。

私はこれを試しましたが、うまくいきませんでした:

byte[] b = stringSymbol.getBytes("UTF-8"); // â¬,£,Â¥
final String str = new String(b); 
4

1 に答える 1

4

非通貨記号を含むテキストを表示しています...元のテキストを取得し、それを UTF-8 としてエンコードし、ISO-8859-1 としてデコードしているようなものです。

これはただのテキストです。後から何もする必要はありません。また、この壊れた形式で表示されることもありません。テキストをバイトに戻してから再び文字列に変換する必要がある場合、基本的にはすでに失われていることを意味します。

JSON を返す HTTP 応答のヘッダーを確認してください。データが UTF-8 ではなく ISO-8859-1 であると主張していることに気付くと思います。実際のエンコーディングは、ヘッダーで指定されたエンコーディングと一致する必要があります。そうしないと、この種の効果が発生します。

もう 1 つの可能性は、JSON を返すものは何でも、それが知っているデータを正確に提供しており、データが上流で壊れていることです。この破損に最初に遭遇した場所がわかるまで、データを段階的にたどる必要があります (チェーン内のすべてのリンクを所有していると仮定します)。

于 2013-06-22T07:42:51.360 に答える