2013-07-08 39 views
1

有没有办法找出如果编码是支持或不?例如,像这样的方法:检查程序,如果编码支持

isSupported("UTF-8") == true 

isSupported("UTF-13") == false 

我需要这个来验证,如果我的MimeMessages的内容处置标头是正确的。

回答

6
boolean isCharsetSupported(String name) { 
    try { 
    Charset.forName(name); 
    return true; 
    } catch (UnsupportedCharsetException | IllegalCharsetNameException | IllegalArgumentException e) { 
    return false; 
    } 
} 

或不具有try/catch块:

boolean isCharsetSupported(String name) { 
    return Charset.availableCharsets().keySet().contains(name); 
} 
+0

我希望的东西没有例外,但还是谢谢你;) – woezelmann

+1

使用'Exception's流量控制在Java中气馁。 –

+1

@woezelmann和Uwe,看我的更新。 – jlordo

10

尝试以下方法:

Charset.isSupported("UTF-8") 

此方法可能引发RuntimeException■当名称为null或名称是无效的。

+0

+1,我怎么能忽视的是,Javadoc中......不过,这可能会抛出一个'IllegalCharsetNameException'如果给定的charset名称是非法的 – jlordo

+0

@jlordo正如我写它可以抛出一个'RuntimeException'时名是无效的。 –

+0

我固定在你的答案(中/或)错字弄得我......,对不起。 – jlordo