2013-07-08 47 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