2017-01-24 30 views
2

インドルピー(₹)の対応する記号であるサーバーからこの値(20B9)を通貨として受け取っています。 utf値から通貨記号をテキストビューに表示する方法。Unicode値を文字に変換する方法は?

以下は、サーバーから受信したJSONObjectです。出力として

"currency": { 
    "name": "Indian rupee", 
    "isoCode": "INR", 
    "symbol": "20B9", 
    "decimalDigits": 2 
    } 

そして、私は

public static String formatAmount(Currency currency, double amount) { 
    String currencySymbol = "\\u"+currency.getSymbol(); 
    DecimalFormat df = new DecimalFormat("#"); 
    df.setMaximumFractionDigits(0); 
    byte[] utf8 = new byte[0]; 
    try { 
     utf8 = currencySymbol.getBytes("UTF-8"); 
     currencySymbol = new String(utf8, "UTF-8"); 
     System.out.println(currencySymbol); 
    } catch (UnsupportedEncodingException e) { 
     currencySymbol = currency.getIsoCode(); 
    } 
    return currencySymbol + df.format(amount); 
} 

製品のコストをフォーマットするbelove機能を使用しています。しかし、私は\ u20B9を取得していない₹

+0

今はどうなっていますか?完全なテキストを表示してください。 20B9は私にとってutf-8の値のようには見えませんが、20はスペースcharです。 – greenapps

+2

20B9はUnicodeポイント値です。私。 U + 20B9。 JSONを使って作業しているときに、サーバーが非ASCIIから '\ u'プレフィックスを持つUnicodeポイント値にエスケープすることは有効です。 JSONを使用している場合は、適切なデコーダがそれをデコードする必要があります。そうでなければhttp://stackoverflow.com/questions/18380901/how-do-i-convert-unicode-codepoint-to-the-character-presentation –

+0

私たちがさらに助けることができるようにコード –

答えて

1

20B9がUnicodeポイント値です。私。 U + 20B9。エンコードされておらず、UTF-8でもありません。

あなたの文字列が既にバイトからデコードされているので、currencySymbol.getBytes("UTF-8")には無意味です。すべての文字列はASCIIの16進文字列になります。

は代わりに、以下を行う必要があります。

  1. は、Unicodeコードポイントを表す整数、
  2. に進に変換与えられたUnicodeコードポイントで

例を文字を取得します。

関連する問題