String s = new String(s.getBytes("UTF-8"),"UTF-8")之间的区别是什么?和String s = new String(s.getBytes(),"UTF-8");

Jal*_*ddy 3 java

有什么区别

String(s.getBytes("UTF-8"),"UTF-8"); 
Run Code Online (Sandbox Code Playgroud)

String(s.getBytes(),"UTF-8");
Run Code Online (Sandbox Code Playgroud)

在第一个代码示例中,一些特殊字符正在解码为什么以及有什么区别?

如果我使用双解码,会影响任何事情UTF-8吗?

Gho*_*ica 5

来自javadoc:

用于getBytes():

使用平台的默认字符集将此String编码为字节序列,将结果存储到新的字节数组中.

然而,getBytes(Charset)说:

使用给定的字符集将此String编码为字节序列,将结果存储到新的字节数组中.

因此第二个版本允许您完全控制,第一个调用依赖于该平台的默认字符集.

这就是全部.

对于"平台默认",请参见此处.请注意,人们要求将默认值设为UTF-8(参见此处).