2011-02-03 2 views
13

Какие символы Unicode подходят в 1, 2, 4 байта? Может ли кто-нибудь указать мне на полный график символов?UTF-8 Размер кодировки

+4

Ознакомьтесь с первым: http://www.joelonsoftware.com/articles/Unicode.html –

+2

Полный график? Это будет ОГРОМНОЕ. См. Это для печатной версии Basic Multilingual Plane (еще 16): http://shop.designinmainz.de/en/Poster/decodeunicode-Basic-Multilingual-Plane-BMP-Map См. Раздел DecodeUnicode для википодобного представление символов Unicode: http://www.decodeunicode.org/en – Piskvor

+0

Вы также можете прочитать о Универсальных кодах: http://en.wikipedia.org/wiki/Universal_code_%28data_compression%29 – ruslik

ответ

21

Персонажи кодируются в соответствии с их положением в диапазоне. На самом деле вы можете найти алгоритм на странице Википедии для UTF8 - вы можете реализовать его очень быстро Wikipedia UTF8 Encoding

  • U + 0000 до U + 007F являются (правильно), закодированные с помощью одного байта
  • U + 0080 до U + 07FF закодированы с 2 байта
  • U + 0800 до U + FFFF кодируются 3 байта
  • U + 010000 до U + 10FFFF закодированы с 4 байт
4

Википедии статью на UTF-8 имеет достаточно хорошее описание кодировки:

  • 1 байт = кодовых точек 0x000000 к 0x00007F
  • 2 байта = код точки 0x000070 к 0x0007FF
  • 3 байт = код точки 0x000800 к 0x00FFFF
  • 4 байты = кодовые точки 0x010000 до 0x10FFFF

Карты можно скачать непосредственно с unicode.org. Это набор из 150 PDF-файлов, потому что один график будет огромным (может быть, 30 MiB).

Также следует помнить, что Unicode (по сравнению с чем-то вроде ASCII) намного сложнее обрабатывать - есть такие вещи, как текст справа налево, значки байтового заказа, кодовые точки, которые могут быть объединены («составлены») для создания один символ и различные способы представления одной и той же строки (и процесс преобразования строк в каноническую форму, подходящую для сравнения), намного больше символов пробела и т. д. Я бы рекомендовал загрузить всю спецификацию Юникода и прочитать большинство если вы планируете делать больше, чем «не много».

1

UTF-8 компрометации от 1 до 6 байт, хотя текущее количество кодовых точек покрывается всего 4 байтами. UTF-8 использует первый байт, чтобы определить, сколько времени (в байтах) персонаж - увидеть различные ссылки на страницы вики:

UTF-8 Wikipedia

один байт UTF-8 эффективно ASCII - UTF-8 было разработанный для совместимости с ним, поэтому он более распространен, чем UTF-16, например.


Изменить: По-видимому, было решено, кодовые точки в UTF-8 не будет превышать 21 бит (4 байта последовательности) - но она имеет техническую возможность обрабатывать до 31 бит (6 байт UTF-8) ,

+0

UTF-8 ограничен 4 байтами. Кодовое обозначение Unicode ограничено U + 1FFFFF (21 бит), а кодировка UTF-8 является канонической (должна быть выбрана самая короткая). Следовательно, вы никогда не сможете получить 5-байтовую последовательность UTF-8. Либо он будет декодировать персонаж мимо U + 1FFFFF, либо он не будет каноническим. – MSalters

+0

В текущем наборе символов UTF-8 используется только 4 байта, но он предназначен для кодовых точек до 31 бита, что приводит к 6-байтовой последовательности. – Mikaveli

+2

* 6-байтовые символы *? [shudder] – Piskvor

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