我从服务器收到此值(20B9)作为货币,这是印度卢比(₹)的相应符号。如何在utf值中显示textview中的货币符号。?
以下是我从服务器收到的JSONObject。
"currency": {
"name": "Indian rupee",
"isoCode": "INR",
"symbol": "20B9",
"decimalDigits": 2
}
我正在使用belove函数来格式化产品的成本
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);
}
但我得到\ u20B9作为输出而不是₹
答案 0 :(得分:3)
20B9
是Unicode点值。即U + 20B9。它不是编码而不是UTF-8。
尝试currencySymbol.getBytes("UTF-8")
是没有意义的,因为你的字符串已经从字节中解码了 - 你得到的只是十六进制字符串的ASCII字节,因此你得到的响应。
相反,您需要:
示例:
int codepoint = Integer.parseInt(currency.getSymbol(), 16);
char[] currencySymbol =Character.toChars(codepoint);