为字符串设置Charset

时间:2016-08-09 20:14:32

标签: java

我使用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);

但是由于使用了字节,我应该使用哪个字符集来避免不同字符的问题?

2 个答案:

答案 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();