Я пытаюсь получить символы валют на основе их локали. Но вместо того, чтобы возвращать символ, он возвращает код. У меня есть фрагмент:
import java.util.Currency;
import java.util.Locale;
public class CurrencyFormat
{
public void displayCurrencySymbols()
{
Currency currency = Currency.getInstance(Locale.US);
System.out.println("United States: " + currency.getSymbol());
}
public static void main(String[] args)
{
new CurrencyFormat().displayCurrencySymbols();
}
}
Для Locale.US это дает символ $
, но если я заменю
Currency currency = Currency.getInstance(Locale.US);
с участием
Currency currency = Currency.getInstance(Locale.GERMANY);
Тогда вместо символа он дает код страны. Почему это так и как мы можем получить символы?
РЕДАКТИРОВАТЬ: Посмотрев какой-то ответ, я хотел бы уточнить, что установка определенного локального значения по умолчанию не является решением, поскольку мне нужно, чтобы все доступные знаки отображались одновременно.
e.g.
Locale.setDefault(Locale.UK);
даст мне знак евро, но для доллара он даст код вместо знака доллара ($).
USD
, а не$
, используя последнюю версию Java 7 в Windows 7. Однако мой язык по умолчанию — британский. Для Германии я вижу знак евро, а для Великобритании я вижу знак фунта стерлингов. - person Duncan Jones   schedule 27.02.2013Locale.setDefault(Locale.US);
, я получу те же результаты, что и вы. - person Duncan Jones   schedule 27.02.2013USD
для локали США и€
для ГЕРМАНИИ. Я сижу за Mac с немецкими настройками. (А для Великобритании я получаюGBP
. Код, выполненный на eclipse Juno SR1) - person Andreas Dolk   schedule 27.02.2013getSymbol
, чтобы получить представление, которое кто-то из этой локали будет использовать для своей валюты? - person Jon Skeet   schedule 27.02.2013EUR
для Германии? - person Duncan Jones   schedule 27.02.2013String symbolFor(Locale l) {return Currency.getInstance(l).getSymbol(l);}
. Но вы почти наверняка не хотите. - person Tom Anderson   schedule 27.02.2013