Каково внутреннее представление Java для String? Модифицированный UTF-8? UTF-16?
Я искал внутреннее представление Java для String, но у меня есть два материала, которые выглядят надежными, но несовместимыми.
Один:
http://www.codeguru.com/cpp/misc/misc/multi-lingualsupport/article.php/c10451
и это говорит:
Java использует UTF-16 для внутреннего текстового представления и поддерживает нестандартную модификацию UTF-8 для сериализации строк.
Другой это:
http://en.wikipedia.org/wiki/UTF-8#Modified_UTF-8
и это говорит:
Tcl также использует тот же модифицированный UTF-8 [25], что и Java, для внутреннего представления данных Unicode, но использует строгий CESU-8 для внешних данных.
Модифицированный UTF-8? Или UTF-16? Какой из них правильный? А сколько байтов Java использует для символа в памяти?
Пожалуйста, дайте мне знать, какой из них правильный и сколько байтов он использует.