2012-11-27 14 views
1

Насколько я знаю, когда JRE выполняет приложение Java, , строка будет рассматриваться как массив байтов USC2 внутри. В wikipedia можно найти следующий контент.Внутренняя кодировка символов Java 7

Первоначально изначально использовался UCS-2 и добавлена ​​поддержка дополнительного символа UTF-16 в J2SE 5.0.

С новой версией Java (Java 7), Какова его внутренняя кодировка символов?
Есть ли вероятность, что Java начнет использовать UCS-4 внутренне?

ответ

4

Java 7 по-прежнему использует UTF-16 внутри (Read the last section of the Charset Javadoc), и очень маловероятно, что он изменится на UCS-4. Я дам вам две причины:

  1. Изменение из UCS-2 => UCS-4, скорее всего, означает, что они должны изменить символ примитивного от A 16 бит типа к типу 32 бита. Глядя в прошлом на то, как высокие Sun/Oracle оценили обратную совместимость, такое изменение очень маловероятно.
  2. UCS-4 занимает гораздо больше памяти, чем кодированная строка UTF-16 для большинства случаев использования.
+0

История не совсем проста: вы * можете * делать UTF-32 в Java. Посмотрите на мой пост ниже. Или Google для 'JSR-204', или' Java UTF-32 support'. – paulsm4

+1

Вы можете, конечно, кодировать и декодировать строку в Java в/из UTF-32. Но это не означает, что Java использует UTF-32 для внутреннего представления строк. –

+0

UTF-32 - это кодировка символов, которая превращает последовательность символов в последовательность байтов. Он не говорит о том, как Java будет внутренне работать с Unicode. Я сомневаюсь, что Java когда-либо перейдет от UCS-2 для его кодирования, что отлично подходит для большинства применений.Самая большая опасность - если есть кодовая страница UCS-4, то большинство Java-кода ошибочно обрабатывают длину строки как количество символов. Сомнительно, что он правильно перебирал строку и обрабатывал бы кодовые страницы. – locka

0

Q: Насколько я знаю, когда JRE выполняет приложение Java, строка будет рассматриваться как (16-битный Unicode) массив байт

A: Да

В: С новой версией Java (Java 7), какова ее внутренняя кодировка charator-кода ?

A: То же

Q: Есть ли вероятность того, что Java начать использовать UCS-4 внутренне?

A: Я ничего подобного не слышал

Однако, вы можете использовать "кодовые точки" для реализации UTF-32 символов в Java 5 и выше:

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