У меня есть JSON для валют:Показать символы Юникода - Android
[
{
"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");
который я затем преобразовать в мой объект Pojo с GSON
Type objectType = new TypeToken<ArrayList<Currency>>(){}.getType();
ArrayList<Currency> currencies = gson.fromJson(json, objectType);
return currencies;
который прекрасно работает (мои свойства pojo называются такими же, как в json).
ОДНАКО
При попытке отобразить символ не отображать его, как следует, например я получаю "\ u20ac" вместо "€"
txtAmount.setText(currency.getSymbol());
I «уже пробовали в следующем журнале
Log.d(currency.getSymbol() + "\u20ac");
что дает мне:
\u20ac€
Я не понимаю, почему он не будет отображать символы правильно ..
Ваш JSON убегает от обратной косой черты. Попробуйте '' \ u20ac "' вместо '' \\ u20ac "' –
(Вы также читаете JSON ужасно. Вы должны почти * никогда не использовать 'доступный()'. Используйте 'InputStreamReader' и в идеале используйте вспомогательную библиотеку, которая может просто прочитать содержимое любого «Читателя» в строке. Например, Guava.) –
@Jon Skeet Спасибо, что это было, не могли бы вы разместить короткий ответ, чтобы я мог его принять и дать вы кредит. Что касается InputStreamReader, я не смог найти лучший способ прочитать файл из активов, я посмотрю на guava. Благодаря! –