Java 如何打印字符串?

How does Java print a String?

Java使用char数组存储String,String使用UTF-16存储字符。

我的 ubuntu:

$ echo $LANG
en_US.UTF-8

如果我的java源文件的编码是UTF-8,主要内容是:

System.out.println("你好");

你好的意思是hello。使用 UTF-8, 都需要 3 个字节来存储。使用 UTF-16,他们需要 2 个字节。

你好打印到屏幕时,Java发送到Linux的数据OS是用UTF-8还是UTF-16编码的?

String text = "你好";
byte[] array = text.getBytes("UTF-8");
String s = new String(array, Charset.forName("UTF-8"));
System.out.println(s); 

如果你想要UTF-16,你可以试试UTF-16

System.out 是一个 PrintStream,它又使用 StreamEncoder 对字符串进行编码(至少在 Java 6 中)。

StreamEncoder 被要求使用 OS 期望的编码。因此,在您的情况下,它以 UTF-8 格式输出。