当使用 "UTF-8"
编码时,Java 是否可能抛出 UnsupportedEncodingException
,或者我可以安全地抑制它的抛出?
最佳答案
正如 McDowell 在对 templatetypdef's answer 的评论中指出的那样: 如果在实例化新的 String
时使用 Charset
对象而不是传递字符集的名称,则不必处理 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
),但这些都是未经检查的异常,因此您不必自己捕获或重新抛出它们。
编辑 - 自 Java 7 以来,有 java.nio.charset.StandardCharsets
类,它具有常用字符编码的常量。示例:
String s3 = new String(bytes, StandardCharsets.UTF_8);
关于java - Java UTF-8 字符集异常可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5049524/