Java 地区货币符号
我在获取系统的默认货币符号时遇到一些问题。 我通过以下方式获得货币符号:Java 地区货币符号,java,android,localization,internationalization,currency,Java,Android,Localization,Internationalization,Currency,我在获取系统的默认货币符号时遇到一些问题。 我通过以下方式获得货币符号: Currency currency = Currency.getInstance(Locale.getDefault()); Log.v("TAG",currency.getSymbol()); 当系统语言为英语(美国)时,将显示右侧符号($)。 但是当我选择语言葡萄牙语(葡萄牙)时,它返回这个符号· 是什么导致了这种情况?一些想法 可能是因为您得到了正确的(欧元)符号,但您的字体/日志中没有该符号,而且看起来只是该符号
Currency currency = Currency.getInstance(Locale.getDefault());
Log.v("TAG",currency.getSymbol());
当系统语言为英语(美国)
时,将显示右侧符号($
)。
但是当我选择语言葡萄牙语(葡萄牙)
时,它返回这个符号·
是什么导致了这种情况?一些想法
这似乎是一个已知的问题(。 我通过这种方式找到了一个可能的解决方案:
Currency currency = Currency.getInstance(Locale.getDefault());
Log.v("TAG",currency.getSymbol());
因为问题出在符号上,而不是货币代码上,所以我解决了这个问题,创建了一个静态的Map
,其中键是CurrencyCode,值是符号
创建带有CurrencyCode和符号的地图后,只需执行以下操作:
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
}
}
Currency currency = Currency.getInstance(Locale.getDefault());
String curSymbol = MYCURRENCIES.get(currency.getCurrencyCode());
这将根据设备语言将int/double格式化为货币
String currency = cur.replaceAll("[0-9.,]","");
这就是如何通过替换所有数字、点和逗号来获得货币符号的方法也许您使用的是UTF-8而不是UTF-16?我不知道这是怎么回事,但这是一个想法。我认为这将是解决货币问题的一个好办法。getInstance(新语言环境(“您的语言”,countryCode)).getSymbol();您可能会从中得到问题的答案,这很酷,谢谢。ps:对于其他所有人:不使用Log.v,只使用MyCurrencyCode.put(a.getCurrencyCode(),a.getSymbol());
String currency = cur.replaceAll("[0-9.,]","");