Java Android 新建字符串

3
我需要将一个字节数组转换为字符串。因此,我使用了以下函数:
public static String byteToString(byte[] bytes) {
    String str = new String(bytes, Charset.forName("UTF8"));

    return str;
}

问题在于它需要API 9:

调用需要API级别9(当前最低为8):new java.lang.String

但我也想向API 8用户提供我的应用程序。是否有任何可能或替代方法?

哪个调用?forName吗? - Robert Harvey
1
@RobertHarvey 使用 Charset 参数的 String 构造函数 - Blackbelt
2个回答

8
你可以使用 new String(bytes, "UTF8")(构造函数 String(byte[], String))来进行转换。该方法在所有版本中都可用(API 级别 1+)。

是的:http://developer.android.com/reference/java/lang/String.html#String(byte[], java.lang.String) - EpicPandaForce

3
你做不到。你可以做的是检查 sdk 版本。
  if (Build.VERSION.SDK_INT >= 9) {
    // Constructor with charset
  } else {
   // Constructor without charset, providing the charset as string
  }

Froyo设备占比约为0.7%


技术上来说,Charset对象没有构造函数,但在API 8中有String charSet(尽管我仍然会使用这种类型的检查)。 - gtgaxiola
我理解你的观点,但我所指的是 //Constructor without charset 这个注释。这是一个错误的建议,因为它可能无法产生与其他字符串相同的结果。实际上,他应该始终提供字符集,可以是对象或名称形式。 - Seelenvirtuose
抱歉,那只是措辞问题。我的意思是//构造函数没有字符集,提供字符集作为字符串。谢谢@Seelenvirtuose - Blackbelt
1
评论总是关于措辞的,我在这些方面比较追求严谨,包括注释和命名等。顺便说一句,这是一个很好的答案。+1 - Seelenvirtuose
1
我接受了另一个答案,因为它很好用。但是我也给了你+1的帮助,谢谢。 - Phil
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接