Беспорядок на Unicode и многобайтовых статьях

Путем обращения Статьи Joel

Некоторые люди являются объектом неправильного представления, что Unicode является просто 16-битным кодом, где каждый символ берет 16 битов и поэтому существует 65 536 возможных символов. Это не, на самом деле, корректно.

После чтения целой статьи моя точка - то, что, если кто-то сказал Вам, его текст находится в unicode, Вы будете понятия не иметь сколько пространства памяти, поднятого каждым его символом. Он должен сказать Вам, "Мой unicode текст кодируется в UTF-8", тогда только у Вас будет идея, сколько пространства памяти поднято каждым его символом.

Unicode = не необходимые 2 байта для каждого символа


Однако, когда прибывает для Кодирования Статьи Проекта и Справки Microsoft, это смутило меня:

Microsoft:

Unicode является 16-разрядной кодировкой символов, обеспечивая достаточно кодировки для всех языков. Все символы ASCII включены в Unicode как "расширенные" символы.


Проект кода:

Набор символов Unicode является "широким символом" (2 байта за символ) набор, который содержит каждый символ, доступный на каждом языке, включая все технические символы и специальные символы публикации. Многобайтовый набор символов (MBCS) использует любые 1 или 2 байта за символ

Unicode = 2 байта для каждого символа?

Действительно ли 65536 возможных символов в состоянии представить весь язык в этом мире?

Почему понятие кажется отличающимся среди сообщества веб-разработчика и настольного сообщества разработчиков?

9
задан Cheok Yan Cheng 5 March 2010 в 02:27
поделиться

2 ответа

Когда-то давно

  • Unicode имел столько символов, сколько умещалось в 16 битах, а
  • UTF-8 не существовал или не был де-факто кодировкой. использовать.

Эти факторы привели к тому, что UTF-16 (или, скорее, то, что сейчас называется UCS-2) стал считаться синонимом «Unicode», потому что это была, в конце концов, кодировка , которая поддерживала весь Unicode.

На практике вы увидите, что «Unicode» используется там, где имеется в виду «UTF-16» или «UCS-2». Это историческое заблуждение, которое следует игнорировать и не распространять. Юникод - это набор символов ; UTF-8, UTF-16 и UCS-2 - это разные кодировки .

(Разница между UTF-16 и UCS-2 заключается в том, что UCS-2 является истинной кодировкой 16 бит на «символ» и, следовательно, кодирует только часть Unicode «BMP» (базовая многоязычная плоскость), тогда как UTF-16 использует «суррогатные пары» (всего 32 бита) для кодирования символов выше BMP.)

11
ответ дан 4 December 2019 в 15:14
поделиться

Чтобы расширить ответ @ Kevin:

Описание справки Microsoft устарело и описывает состояние мир на временной шкале NT 3.5 / 4.0.

Вы также иногда будете видеть упоминания UTF-32 и UCS-4, чаще всего в мире * nix. UTF-32 - это 32-битная кодировка Unicode , подмножество UCS-4. Стандартное приложение №19 Unicode описывает различия между ними.

Лучшим справочным материалом, который я нашел для описания различных моделей кодирования, является Технический отчет Unicode № 17 Модель кодирования символов Unicode , особенно таблицы в разделе 4.

2
ответ дан 4 December 2019 в 15:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: