public class LocaleUtil extends Object
由于系统locale和charset是不可靠的,不同的环境可能会有不同的系统设置,因此应用程序最好不要依赖这个系统值。
LocaleUtil
提供了一个方案,可以“修改”默认locale和charset。
LocaleUtil
提供了以下几个作用域的locale/charset设定:
LocaleUtil.getSystem()
取得。LocaleUtil.getDefault()
取得。如未明确指定,则取“系统作用域”的值。LocaleUtil.getContext()
取得。如未明确指定,则取“默认作用域”的值。每个线程都可以有自己的locale和charset设置,不会干扰其它线程。
Util工具箱里的其它工具类,当需要时,将从LocaleUtil.getContext()
中取得当前的locale和charset设置。例如:StringEscapeUtil.escapeURL(value)
,如不指定charset
,将从context中取得charset。这样,框架往往可以修改context值,而所有线程中的方法调用将服从于框架的locale和charset设定。
Modifier and Type | Class and Description |
---|---|
static interface |
LocaleUtil.Notifier
当default或context locale被改变时,通知监听器。
|
Constructor and Description |
---|
LocaleUtil() |
Modifier and Type | Method and Description |
---|---|
static List<String> |
calculateBundleNames(String baseName,
Locale locale)
取得备选的resource bundle风格的名称列表。
|
static List<String> |
calculateBundleNames(String baseName,
Locale locale,
boolean noext)
取得备选的resource bundle风格的名称列表。
|
static String |
getCanonicalCharset(String charset)
取得正规的字符集名称, 如果指定字符集不存在, 则抛出
UnsupportedEncodingException . |
static LocaleInfo |
getContext()
取得当前thread默认的区域。
|
static LocaleInfo |
getDefault()
取得默认的区域。
|
static LocaleInfo |
getSystem()
取得操作系统默认的区域。
|
static boolean |
isCharsetSupported(String charset)
判断指定的charset是否被支持。
|
static boolean |
isLocaleSupported(Locale locale)
判断locale是否被支持。
|
static Locale |
parseLocale(String localeString)
解析locale字符串。
|
static void |
resetContext()
复位当前thread的区域设置。
|
static void |
resetDefault()
复位默认的区域设置。
|
static LocaleInfo |
setContext(Locale locale)
设置当前thread默认的区域。
|
static LocaleInfo |
setContext(LocaleInfo localeInfo)
设置当前thread默认的区域。
|
static LocaleInfo |
setContext(Locale locale,
String charset)
设置当前thread默认的区域。
|
static LocaleInfo |
setDefault(Locale locale)
设置默认的区域。
|
static LocaleInfo |
setDefault(LocaleInfo localeInfo)
设置默认的区域。
|
static LocaleInfo |
setDefault(Locale locale,
String charset)
设置默认的区域。
|
public static boolean isLocaleSupported(Locale locale)
locale
- 要检查的localepublic static boolean isCharsetSupported(String charset)
charset
- 要检查的charsetpublic static Locale parseLocale(String localeString)
Locale字符串是符合下列格式:language_country_variant
。
localeString
- 要解析的字符串Locale
对象,如果locale字符串为空,则返回null
public static String getCanonicalCharset(String charset)
UnsupportedEncodingException
.charset
- 字符集名称IllegalCharsetNameException
- 如果指定字符集名称非法UnsupportedCharsetException
- 如果指定字符集不存在public static List<String> calculateBundleNames(String baseName, Locale locale)
例如:
calculateBundleNames("hello.jsp", new Locale("zh", "CN", "variant"))
将返回下面列表:
baseName
- bundle的基本名locale
- 区域设置public static List<String> calculateBundleNames(String baseName, Locale locale, boolean noext)
例如:
calculateBundleNames("hello.jsp", new Locale("zh", "CN", "variant"),
false)
将返回下面列表:
当noext
为true
时,不计算后缀名,例如
calculateBundleNames("hello.world",
new Locale("zh", "CN", "variant"), true)
将返回下面列表:
baseName
- bundle的基本名locale
- 区域设置public static LocaleInfo getSystem()
public static LocaleInfo getDefault()
public static LocaleInfo setDefault(Locale locale)
locale
- 区域public static LocaleInfo setDefault(Locale locale, String charset) throws UnsupportedCharsetException
locale
- 区域charset
- 编码字符集UnsupportedCharsetException
public static LocaleInfo setDefault(LocaleInfo localeInfo) throws UnsupportedCharsetException
localeInfo
- 区域和编码字符集信息UnsupportedCharsetException
public static void resetDefault()
public static LocaleInfo getContext()
public static LocaleInfo setContext(Locale locale)
locale
- 区域public static LocaleInfo setContext(Locale locale, String charset) throws UnsupportedCharsetException
locale
- 区域charset
- 编码字符集UnsupportedCharsetException
public static LocaleInfo setContext(LocaleInfo localeInfo) throws UnsupportedCharsetException
localeInfo
- 区域和编码字符集信息UnsupportedCharsetException
public static void resetContext()
Copyright © 2006–2018 TinyGroup. All rights reserved.