java.lang.String.getBytes(String charsetName)和java.lang.String.getBytes(Charset charset)之间有什么区别?

时间:2014-05-12 10:36:22

标签: android

java.lang.String.getBytes (String charsetName)java.lang.String.getBytes (Charset charset)之间的区别。

如何在android api中使用java.lang.String.getBytes (Charset charset) 8。还有其他方法吗?

2 个答案:

答案 0 :(得分:-1)

它是一样的。

从java源代码复制:

public byte[] getBytes(String charsetName)
        throws UnsupportedEncodingException {
    if (charsetName == null) throw new NullPointerException();
    return StringCoding.encode(charsetName, value, 0, value.length);
}

public byte[] getBytes(Charset charset) {
    if (charset == null) throw new NullPointerException();
    return StringCoding.encode(charset, value, 0, value.length);
}

解释@ Henry的回答:

static byte[] encode(String charsetName, char[] ca, int off, int len) throws UnsupportedEncodingException {
         StringEncoder se = deref(encoder);
         String csn = (charsetName == null) ? "ISO-8859-1" : charsetName;
         if ((se == null) || !(csn.equals(se.requestedCharsetName())
                               || csn.equals(se.charsetName()))) {
             se = null;
             try {
                 Charset cs = lookupCharset(csn);
                 if (cs != null)
                     se = new StringEncoder(cs, csn);
             } catch (IllegalCharsetNameException x) {}
             if (se == null)
                 throw new UnsupportedEncodingException (csn);
             set(encoder, se);
         }
         return se.encode(ca, off, len);
}

答案 1 :(得分:-1)

它的方法相同。如果传递CharsetName,则稍后将通过java类找到Charset。否则你提供Charset并且不需要创建它的对象。

与使用Point(x,y)和Point(point)

的构造函数相同