Java 为什么字符串是¿&引用;翻译成¿&引用;调用.getBytes()时

Java 为什么字符串是¿&引用;翻译成¿&引用;调用.getBytes()时,java,utf-8,character-encoding,Java,Utf 8,Character Encoding,当使用 System.out.println(new String("¿".getBytes("UTF-8"))); 是写出来的,而不是仅仅写出来的 为什么??我们如何修复它呢?听起来系统控制台不在UTF-8中您需要在字符串构造函数中指定字符集(请参阅)。您不必使用UTF-16来解决此问题: new String("¿".getBytes("UTF-8"), "UTF-8"); 很好用。只要给getBytes()方法的编码与传递给字符串构造函数的编码相同,就可以了 试试看: System.o

当使用

System.out.println(new String("¿".getBytes("UTF-8")));
是写出来的,而不是仅仅写出来的


为什么??我们如何修复它呢?

听起来系统控制台不在UTF-8中

您需要在字符串构造函数中指定字符集(请参阅)。

您不必使用UTF-16来解决此问题:

new String("¿".getBytes("UTF-8"), "UTF-8");
很好用。只要给
getBytes()
方法的编码与传递给字符串构造函数的编码相同,就可以了

试试看:

System.out.println(new String("¿".getBytes("UTF-8"), "UTF-8"));

在将字符串转换为字节和将字节转换回字符串时,都需要指定编码

这正是我所说的,而且我链接到了API文档