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 格式输出。
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 格式输出。