【发布时间】:2014-06-12 13:30:58
【问题描述】:
我需要使用 UTF-8 编码将字符串编码为字节数组。我正在使用 Google guava,它的 Charsets 类已经为 UTF-8 编码定义了 Charset 实例。我有两种方法:
-
String.getBytes(charsetName)
try { byte[] bytes = my_input.getBytes ( "UTF-8" ); } catch ( UnsupportedEncodingException ex) { } -
String.getBytes(字符集对象)
// Charsets.UTF_8 is an instance of Charset byte[] bytes = my_input.getBytes ( Charsets.UTF_8 );
我的问题是我应该使用哪一个?它们返回相同的结果。对于方式 2 - 我不必尝试/捕获!我看了一下 Java 源代码,发现方式 1 和方式 2 的实现方式不同。
有人有什么想法吗?
【问题讨论】:
-
两者的结果是否相同?如果是这样,我会赞成后一种情况。如果不是,您需要决定哪个是正确的。
-
是的,它们返回相同的结果。但我担心的是为什么它们的实施方式不同?为什么方式 1 不会在内部调用方式 2?
-
@Loc 是什么让您认为前者没有在内部调用后者? (或者,他们都不会调用其他一些常见的内部方法?)docjar.com/html/api/java/lang/String.java.html 第 951 - 980 行
-
@BrianRoach Roach 他们调用 StringCoding.encode 但方式 1 调用此方法的第一个参数是 String,方式 2 调用此方法的第一个参数是 Charset 实例。如果我们看一下这个方法(第 2 版),它们的实现方式不同。
标签: java string character-encoding