Java UTF-8 字符集异常是否可能?
2022-09-02 22:55:51
Java在使用编码时可能会抛出,或者我可以安全地抑制它抛出吗?UnsupportedEncodingException
"UTF-8"
Java在使用编码时可能会抛出,或者我可以安全地抑制它抛出吗?UnsupportedEncodingException
"UTF-8"
正如 McDowell 在对 templatetypdef 答案的评论中指出的那样:如果您在实例化新对象时使用对象,而不是传递字符集的名称,则不必处理或任何其他已检查的异常:Charset
String
UnsupportedEncodingException
byte[] bytes = ...;
// Requires you to handle UnsupportedEncodingException
String s1 = new String(bytes, "UTF-8");
// Doesn't require you to handle any checked exceptions
String s2 = new String(bytes, Charset.forName("UTF-8"));
这是Java标准库中的不一致,我们必须忍受......
请注意,可以引发异常 (, , ),但这些都是未经检查的异常,因此您不必自己捕获或重新抛出它们。Charset.forName(...)
IllegalCharsetNameException
IllegalArgumentException
UnsupportedCharsetException
edit - 从Java 7开始,有一个类具有常用字符编码的常量。例:java.nio.charset.StandardCharsets
String s3 = new String(bytes, StandardCharsets.UTF_8);
根据Javadoc for Charset
的说法,每个Java实现都必须支持UTF-8,以及其他一些字符集。因此,我认为您可以安全地抑制异常;除非你有一个不合规的Java实现,否则这不应该失败。