2015-02-05 2 views
3

Java использует массив символов для хранения String, а String использует UTF-16 для хранения символов.Как Java печатает строку?

Для моего убунту:

$ echo $LANG 
en_US.UTF-8 

Если кодирование моего исходного файла Java является UTF-8, а основное содержание:

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

Значение 你好 является hello. С UTF-8, и им нужно хранить 3 байта. С UTF-16 им нужно 2 байта.

Когда 你好 напечатан на экране, являются ли данные, отправленные Java в ОС Linux, закодированные с помощью UTF-8 или UTF-16?

ответ

1

System.out является PrintStream, который, в свою очередь, использует StreamEncoder для кодирования строки (по крайней мере в Java 6).

StreamEncoder предлагается использовать кодировку, ожидаемую операционной системой. Таким образом, в вашем случае он выводится в UTF-8.

-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

Смежные вопросы