我从服务器收到此值 (20B9) 作为货币,它是印度卢比 (£) 的对应符号。如何从 utf 值在文本视图中显示货币符号?
下面是我从服务器收到的 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,因为输出不是 $
20B9
是 Unicode 点值。 IE。 U+20B9。它没有编码,也不是 UTF-8。
尝试
currencySymbol.getBytes("UTF-8")
是没有意义的,因为你的字符串已经从字节解码 - 你将得到的只是十六进制字符串的 ASCII 字节,因此你得到的响应。
相反,您需要:
示例:
int codepoint = Integer.parseInt(currency.getSymbol(), 16);
char[] currencySymbol =Character.toChars(codepoint);