我试图基于servlet中的语言环境获取货币符号。
我尝试执行以下操作,但是它抛出了IllegalArgumentException
。
Currency.getInstance(request.getlocale())
语言环境的语言为“ en”,但国家/地区值为空。
如何获取语言环境的货币符号,货币代码?
答案 0 :(得分:1)
在没有国家/地区的情况下要求货币是没有意义的。
在您的问题中,“英语”的货币是什么?可能是USD(US),AUD(Australia),UKP(United Kingdom),EUR(Ireland),CAD(Canada)等,等等。换句话说,在不知道国家的情况下,您无法选择货币,并且在实际上,货币只取决于国家,而不会取决于语言。国家/地区采用一种官方货币,但可以使用多种语言,例如在加拿大,语言环境为fr_CA
和en_CA
。
此外,在Javadoc中(我的重点)也清楚地阐明了这一点:
public static Currency getInstance(Locale locale)
返回给定语言国家的Currency实例。语言环境的语言和变体组件将被忽略。结果会随时间变化,因为国家/地区会更改其货币。例如,对于欧洲货币联盟的原始成员国,该方法返回的是旧的本国货币(直到2001年12月31日),欧元返回的是2002年1月1日(即各自国家的当地时间)。
对于没有货币的地区(例如南极洲),该方法返回null。
参数:
语言环境-需要其 国家 货币实例的语言环境
返回:
给定语言环境的国家的Currency实例,或者为null 抛出:
NullPointerException-如果语言环境为空
IllegalArgumentException-如果给定语言环境的国家/地区不是受支持的ISO 3166国家/地区代码。