gpt4 book ai didi

java - 显示 unicode 字符 - Android

转载 作者:行者123 更新时间:2023-12-01 13:09:12 24 4
gpt4 key购买 nike

我有一个货币 json :

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

我把它放在 Assets 文件夹中并像这样解析:

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€

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

最佳答案

您的 JSON 已转义反斜杠,这意味着它是“backslash u 20ac”的 JSON 表示形式。

您需要做的就是转义反斜杠,这样 \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);
}

关于java - 显示 unicode 字符 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23028358/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com