java - Java UTF-8 字符集异常可能吗?

标签 java exception utf-8 character-encoding

当使用 "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(...) 可以抛出异常(IllegalCharsetNameExceptionIllegalArgumentExceptionUnsupportedCharsetException ),但这些都是未经检查的异常,因此您不必自己捕获或重新抛出它们。

编辑 - 自 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/

相关文章:

java - 在 RPT 运行期间,驱动程序报告它不再从工作台接收消息

java - 如果索引范围为 long,则迭代数组

c# - 如何捕获从延续抛出的未处理异常?

mysql - 字符 "ي"和 "ی"和波斯语的区别 - Mysql

R字符串,UTF-8编码瑞典字符处理

MYSQL 5.1.61 在 utf8 中对中欧语言进行排序

java - 如何使用 jedis for Java 连接到 Docker Redis 集群实例?

java - Rcaller 2.0 生成的图是渲染和空输出,生成的文件 (png) 也是空的?

c# - 在 Observable.FromAsyncPattern 上优雅地处理超时

exception - NoSuchMethodError HTableDescriptor.addFamily