J'ai des problèmes pour obtenir le symbole de devise par défaut du système.
Je reçois le symbole monétaire de cette façon: lorsque la langue du système est dans Qu'est-ce qui peut causer cela? P> p> anglais (États-Unis) code> Le bon symbole apparaît (
$ code>).
Mais quand je choisis la langue
portugais (Portugal) code> il renvoie ce symbole
¤ code>. P>
3 Réponses :
quelques pensées; p>
pourrait-il être que vous obtenez le bon symbole pour (euro) mais votre police / votre journal ne l'a pas et cela ressemble seulement à ce symbole? P> LI>
Locale est une jolie classe fragile, ses constructeurs n'ont aucune vérification erronée. Vous pouvez facilement voir des locaux qui ne sont pas pris en charge ou n'existent pas vraiment dans les normes (telles que «de_us» pour «allemand comme parlé aux États-Unis»). P> Li>
Notez que les données locales ne sont pas nécessairement disponibles pour aucun des locales prédéfinies comme constantes de cette classe, à l'exception de l'EN_US, qui est la seule locale, les garanties Java sont toujours disponibles et diffère dans différentes versions Android, et peut également être limité par l'opérateur ou des constructions personnalisées. pT_PT a été ajouté à 2.3 . p> li>
Concernant l'option que vous avez présentée, si vous consultez Les normes UNICODE < / a> Comme ils ont été mis en œuvre dans API8 et en hausse, le Portugal n'existe que comme territoire (et non la combinaison). P> Li>
Cela peut être meilleur si vous créez donc une instance locale partielle à partir du code de pays, puis obtenez le symbole monétaire du Portugal par exemple. Vous ne serez pas en mesure de vous conformer au prédéfini statique de la classe locale comme Il soutient assez étroitement des locaux différents (c'est une liste courte), mais cela devrait fonctionner car ce paramètre locale dispose des données que vous recherchez dans le système. p> li>
J'essaierais également de voir si la devise.Tostring () renvoie l'EUR (le code ISO 4217 de la devise, généralement un acronyme de trois lettres). P> LI>
ol>
Cela semble être un problème connu ( http://code.google.com/p / Android / Problèmes / Détails? ID = 38622 . Je suis venu à une solution éventuelle de cette façon:
Étant donné que le problème est dans le symbole et non du code de devise, j'ai résolu ce problème de créer une carte code> statique code> où la clé est le moneydcode et la valeur est le symbole em>. p> afin d'obtenir tout (ou presque) les codes de devises disponibles dans les informations locales que vous pouvez faire quelque chose comme ceci: p> Currency currency = Currency.getInstance(Locale.getDefault());
String curSymbol = MYCURRENCIES.get(currency.getCurrencyCode());
C'est assez cool, merci. PS: pour tout le monde: au lieu de log.v simplement myCurrences.put (A.GetCurrencyCode (), A.Getsymbol ());
String currency = cur.replaceAll("[0-9.,]","");
Peut-être que vous utilisez UTF-8 au lieu de UTF-16? Je ne vois pas comment cela pourrait arriver, mais c'est une pensée.
Je pense que ce sera une bonne solution à votre réponse à votre réponse.GetInstance (Nouveaux local ("Votre langue", CountryCode)). Getymbol ();
Vous pourriez avoir une réponse à votre question de ce Link