To wydaje się być znany problem (http://code.google.com/p/android/issues/detail?id=38622 doszedłem do możliwego rozwiązania w ten sposób:.
Ponieważ problem jest w symbolu, a nie kod waluty, i rozwiązał ten problem tworząc statyczne Map
gdzie kluczem jest CurrencyCode a wartość jest Symbol.
public static final Map<String, String> MYCURRENCIES = new HashMap<String, String>(){
{
put("EUR","€");
put("USD","$");
(..)
}
};
W celu uzyskania wszystkich (lub prawie) kody dostępne w informacji locales walutach można zrobić coś takiego:
for (Locale ll: Locale.getAvailableLocales()){
try {
Currency a = Currency.getInstance(ll);
Log.v("MyCurrency",a.getCurrencyCode()+"#"+a.getSymbol());
}catch (Exception e){
// when the locale is not supported
}
}
Po stworzony Ci mapa z CurrencyCode i symbol po prostu trzeba coś takiego:
Currency currency = Currency.getInstance(Locale.getDefault());
String curSymbol = MYCURRENCIES.get(currency.getCurrencyCode());
Może używasz UTF-8 zamiast UTF-16? Nie rozumiem, jak to się mogło stać, ale jest to myśl. – AedonEtLIRA
Myślę, że to będzie dobre rozwiązanie dla Twojej odpowiedzi Currency.getInstance (nowe ustawienia regionalne ("TWÓJ JĘZYK", kod kraju)). GetSymbol(); –
Możesz otrzymać odpowiedź na swoje pytanie z tego [link] (https://stackoverflow.com/questions/16832655/getting-currency-code-if-we-have-only-country-code-in-database/16833419# 16833419) –