- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在我的应用程序中,我使用 Locale.getDefault()
获取用户的默认语言环境,然后将其传递给 Currency.getInstance(Locale)
。它大部分都有效,但我已经开始收到用户的报告,这些报告在堆栈跟踪中显示以下 IllegalArgumentException
:
Caused by: java.lang.IllegalArgumentException: Unsupported ISO 3166 country: en_UK at java.util.Currency.getInstance(Currency.java:81) at org.
我原以为 Android 只会返回有效的语言环境,但事实显然并非如此。
如何处理此类情况以确保我只获得有效的 ISO 3166 语言环境?简单的方法是处理这种特殊情况,但如果有的话,我宁愿使用通用解决方案。
谁有这方面的经验?谢谢。
最佳答案
ISO 3166英国的两个字母缩写不是UK
,正确的id是GB
。 UK
是出于兼容性原因(过去犯的错误)。
我确实在寻找其他异常(exception)情况,但没有找到,所以现在我只处理特殊情况。
Locale loc = new Locale("en","UK"); // test code
if(loc.getCountry().equals("UK")){
loc = new Locale(loc.getLanguage(), "GB");
}
Currency cur = Currency.getInstance(loc);
关于java - 如何使用非 ISO 3166 国家/地区(如 en_UK)创建货币实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13316719/
到目前为止,我一直使用“en_UK”表示英式英语。今天我在 Zend Framework 中使用它时出现错误,因为该语言环境没有包含在可识别的语言环境的长列表中。 这里只是该列表的简短摘录: 'ee_
在我的应用程序中,我使用 Locale.getDefault() 获取用户的默认语言环境,然后将其传递给 Currency.getInstance(Locale)。它大部分都有效,但我已经开始收到用户
我是一名优秀的程序员,十分优秀!