Java NumberFormat生成'EUR'而不是€

时间:2012-07-10 00:04:16

标签: android currency number-formatting

我正在开发支持多种用户语言的Android应用。

在应用程序中,我使用java.util.NumberFormat格式化货币:

String formatCurrency(String amount) {
    // getCurrentLocale determines the locale from the user's selected language; 
    // if the user selects de_DE as the app's language, then this method will return Locale.Germany
    final Locale locale = getCurrentLocale(); 
    final NumberFormat formatter = NumberFormat.getCurrencyInstance(locale);
    return formatter.format(new BigDecimal(amount));
}

我使用的测试设备是HTC G2,它有两种设备语言选项 - 英语和西班牙语。

好的,现在我选择我的应用的用户语言为' de_DE':

// When my device language is english, if I call:
System.out.println(formatCurrency("1.79"));
// I got:
1.79 €

// But when I switch my device language to spanish:
System.out.println(formatCurrency("1.79"));
// I got :
1.79 EUR

我的问题是,在这两种情况下,我可以让NumberFormat给我€?

2 个答案:

答案 0 :(得分:1)

为什么不总是使用您希望它显示的Locale?忽略设备的Locale

Locale.ENGLISH

String formatCurrency(String amount) {
    final NumberFormat formatter = NumberFormat.getCurrencyInstance(Locale.ENGLISH);
    return formatter.format(new BigDecimal(amount));
}

答案 1 :(得分:0)

你应该看看this

使用货币对象中的 getSymbol() 来解决您的问题。