我使用forbiddenapis检查我的代码。它给出了一个错误:
[forbiddenapis] Forbidden class/interface use: java.lang.String#<init>(byte[])
[forbiddenapis] in org.a.b.MyObject (MyObject.java:14)
指向:
String finalString = new String(((ByteArrayOutputStream) out).toByteArray());
我该如何解决?我知道我可以设置一个Charset,即:
Charset.forName("UTF-8").encode(myString);
但是由于使用了字节,我应该使用哪个字符集来避免不同字符的问题?
答案 0 :(得分:1)
您首先需要深入了解字节编码的字符集。如果您确信它始终是UTF8,那么您可以使用String
构造函数:
new String(bytes, StandardCharsets.UTF_8)
答案 1 :(得分:0)
请勿使用FileReader
。这是一个旧的实用程序类,用于读取默认平台编码中的文件。这不适合便携式文件。代码是不可移植的。
String / Reader / Writer
拥有Unicode。当从byte[] / InputStream / OutputStream
转换需要指示那些字节的编码时,二进制数据。
String s = new String(bytes, charset);
byte[] bytes = s.getBytes(charset);
似乎该消息提到了FileReader并抱怨其
new String(bytes);
使用默认编码,如:
string.getBytes();