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发送到使用UTF-8或UTF-16编码的Linux OS的数据是什么?
答案 0 :(得分:1)
System.out
是PrintStream
,后者又使用StreamEncoder
对字符串进行编码(至少在Java 6中)。
StreamEncoder
使用操作系统期望的编码。所以在你的情况下,它以UTF-8输出。
答案 1 :(得分:-1)
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