Java 设置字符串的字符集

Java 设置字符串的字符集,java,Java,我用Denapis检查我的代码。它给出了一个错误: [forbiddenapis] Forbidden class/interface use: java.lang.String#<init>(byte[]) [forbiddenapis] in org.a.b.MyObject (MyObject.java:14) 我如何解决它?我知道我可以设置字符集,即: Charset.forName("UTF-8").encode(myString); 但是,由于存在已使用的字节,

我用Denapis检查我的代码。它给出了一个错误:

[forbiddenapis] Forbidden class/interface use: java.lang.String#<init>(byte[]) 
[forbiddenapis]   in org.a.b.MyObject (MyObject.java:14)
我如何解决它?我知道我可以设置字符集,即:

Charset.forName("UTF-8").encode(myString);

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

您首先需要了解编码字节的字符集。如果您确信它始终是UTF8,则可以使用
字符串
构造函数:

new String(bytes, StandardCharsets.UTF_8)

不要使用
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();

<代码>新的字符串(BytErEar,字符集)。您使用的字符集应该是字节编码的字符集。您知道前面的吗?如果您使用UTF-8,请考虑<代码>标准字符集。UTFF88/COD>。必须有一些元数据来指示字节数组的编码。
string.getBytes();