• Java Объясните мне, пожалуйста, как ява справляется с 32-битной уникодой, выделяя всего два байта на char?

Replies (13)

  • @ermine, Так там не обязательно что прям 2 байта, может быть и 4 вполне
  • @ermine, Когда уникод представляют двумя байтами на чар, это называется UTF-16
  • @AlexVK, Не может :)
  • @ermine, Вот щас в 9ке будет сжатие, и на ANSI будет именно 1 байт :)
  • @vt, почему эт не может, вполне может :)
  • @AlexVK, в UTF-8 может, но не в UTF-16
  • @vt, я не об этом
    The characters with values that are outside of the 16-bit range, and within the range from 0x10000 to 0x10FFFF, are called supplementary characters and are defined as a pair of char values.
    docs.oracle.com
  • @vt, Я про енкодинг ничего не говорила, я про char. Читаем, к примеру, доку по ByteBuffer.getChar() и видим ровно два байта.
  • @ermine, у Char вроде как были интеерсные методы, которые говорят что это за 16 бит тут нам попалося, обычные или расширенные, всё то что не влазит в 16 бит кодируется 2мя char-ами или вовсе одним int-ом :)
  • @AlexVK, это и есть UTF-16
  • @ermine, внутреннее представление чара в джаве соответствует заэкоденному символу UTF-16
  • @vt, угу, прочитал
    The native character encoding of the Java programming language is UTF-16. A charset in the Java platform therefore defines a mapping between sequences of sixteen-bit UTF-16 code units (that is, sequences of chars) and sequences of bytes.
    Ка кто не задумывался что за кодировка :)
  • @vt, где у тебя тут voting как на стэковерфлове? поплюсовала бы :)