我有一段代码创建一个新的String
,如下所示:
private final static Charset UNICODE_CHARSET = Charset.forName("UTF-8");
public String makeNewUnicodeString(byte[] octects) {
return new String(octects, UNICODE_CHARSET);
}
在我的计算机上测试时工作正常。但是当我在Android模拟器上运行时,它会抛出:
java.lang.NoSuchMethodError: java.lang.String.<init>
但这有效:
public String makeUnicodeString(byte[] octets) {
try {
return new String(octets, "UTF-8")
} catch (UnsupportedEncodingException uee) {
// never throw.
}
}
我正在使用Android 2.2 API 8,rev 2。
答案 0 :(得分:4)
由于构造函数String (byte[] data, Charset charset)
仅在API级别9(Android SDK 2.3)中添加。所以更新SDK版本解决了我的问题。谢谢大家。
这里的参考:
String - Android开发人员参考。
答案 1 :(得分:1)
这似乎是Java 5和Java 6之间的区别。
接受CharSet的构造函数仅在Java 6中,而不在Java 5中。
http://download.oracle.com/javase/1,5.0/docs/api/java/lang/String.html
http://download.oracle.com/javase/6/docs/api/java/lang/String.html
编辑 - 有问题的构造函数在android api中..这并没有真正回答这个问题。
答案 2 :(得分:0)
你可以这样使用
byte[] raw = null;
try {
raw = key.getBytes("US-ASCII");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}