显示unicode字符 - Android

时间:2014-04-12 09:03:01

标签: java android json unicode

我有一个json货币:

[
  {
    "acronym": "EUR",
    "currency": "Euros",
    "favorite": "true",
    "placeholder": "\\u20ac00.00 EUR",
    "symbol": "\\u20ac"
  }
]

我把它放在资产文件夹中并解析如下:

InputStream stream = context.getAssets().open("currencies.json");
int size = stream.available();
byte[] buffer = new byte[size];
stream.read(buffer);
stream.close();
str = new String(buffer, "UTF-8");

然后我用GSON转换为我的pojo对象

Type objectType = new TypeToken<ArrayList<Currency>>(){}.getType();
ArrayList<Currency> currencies = gson.fromJson(json, objectType);
return currencies;

工作正常(我的pojo属性与json中的命名相同)。

无论其

例如,当我尝试显示符号时,它不会显示符号 我得到“\ u20ac”而不是“€”

txtAmount.setText(currency.getSymbol());

我已尝试过以下日志

Log.d(currency.getSymbol() + "\u20ac");

这给了我:

\u20ac€

我不明白为什么它不能正确显示字符..

1 个答案:

答案 0 :(得分:1)

你的JSON已经逃脱了反斜杠,这意味着它是&#34;反斜杠u 20ac&#34;的JSON表示。

您需要做的就是 not 转义反斜杠,以便\u20ac是欧元符号的JSON转义版本:

"symbol": "\u20ac"

我还建议使用Guava加载你的字符串,并使用try-with-resources语句:

String json;
try (Reader reader = 
         new InputStreamReader(context.getAssets().open("currencies.json"),
                               Charsets.UTF_8)) {
    json = CharStreams.toString(reader);
}