Каково различие между наборами символов и кодировкой символов

Каково различие между наборами символов и кодировкой символов? Когда я говорю, что использую utf-8, кодирующий затем, каков будет мой набор символов? Это берет unicode в качестве набора символов по умолчанию?

10
задан Amarghosh 18 March 2010 в 11:33
поделиться

5 ответов

Набор символов определяет соответствие между числами и символами. Почти все наборы символов говорят, что 65 - это A, и в целом соглашаются с отображением чисел до 127. Но у них могут быть разные позиции, когда дело доходит до чисел выше 127.

Существует много наборов символов

  • EBCDIC
  • Двухбайтовый набор символов
  • ANSI
  • Различные наборы символов OEM
  • Unicode, попытка создать единый набор символов, включающий все разумные системы письма на планете, а также некоторые выдуманные, такие как клингонские.

Когда вы говорите «кодировка символов», вы имеете в виду, как кодовая точка Unicode (символ) хранится внутри.

  • В кодировке UTF-8 каждая кодовая точка от 0 до 127 хранится в одном байте. Только кодовые точки 128 и выше сохраняются с использованием 2, 3, фактически до 6 байтов.
  • Есть что-то под названием UTF-7, которое очень похоже на UTF-8, но гарантирует, что старший бит всегда будет нулевым.
  • Существуют сотни традиционных кодировок, которые могут правильно хранить только некоторые кодовые точки и изменять все остальные код ставит знаки вопроса. Некоторые популярные кодировки английского текста - это Windows-1252 (стандарт Windows 9x для западноевропейских языков) и ISO-8859-1, также известный как Latin-1 (также полезный для любого западноевропейского языка).
  • UTF 7, 8, 16 и 32 обладают прекрасным свойством - правильно хранить любую кодовую точку.

Этот пост почти полностью основан на сообщении Джоэла Спольски о Юникоде: Абсолютный минимум Каждый разработчик программного обеспечения должен абсолютно точно знать о Юникоде и наборах символов . Прочтите это, чтобы лучше понять.

0
ответ дан 4 December 2019 в 02:50
поделиться

UTF-8 - это кодировка набора символов Юникода. Поэтому, если вы используете UTF-8, набор символов - Unicode, но вам вряд ли придется где-либо указывать это отдельно. Другой основной кодировкой Unicode является UTF-16, которая не помещается в потоки 8-битных байтов, поскольку содержит нулевые байты.Если вы имеете дело с Unicode в байтовой последовательности, он обязательно закодирован как UTF-8.

Помимо Unicode, обычно считается, что наборы символов имеют единую фиксированную кодировку, а затем такие термины, как набор символов, кодировка, кодовая страница, кодировка, часто используются взаимозаменяемо или в зависимости от поставщика. Это небрежно, но не создает проблем во время выполнения.

Единственные возможные исключения, о которых я могу думать, - это Восточная Азия: JIS и EUC изначально определили несколько кодировок для одного и того же набора символов, но на практике сегодня каждая кодировка рассматривается отдельно.

4
ответ дан 4 December 2019 в 02:50
поделиться

Набор символов: определение того, какой символ имеет какую числовую кодовую точку (ascii, jis, unicode)

Кодировка: определение физического представления числовой кодовой точки (utf, ucs, shiftjis)

3
ответ дан 4 December 2019 в 02:50
поделиться

Согласно терминологии Unicode

  • ACR: репертуар абстрактных символов = набор символов для кодирования, например, некоторый алфавит или набор символов
  • CCS: набор кодированных символов {{ 1}} = отображение из репертуара абстрактных символов в набор неотрицательных целых чисел
  • CEF: Форма кодирования символов = отображение из набора неотрицательных целых чисел, которые являются элементами CCS в набор последовательностей конкретных кодовых единиц определенной ширины, например 32-битных целых чисел
  • CES: схема кодирования символов = обратимое преобразование из набора последовательностей кодовых единиц (из одной или нескольких CEF к сериализованной последовательности байтов)
  • CM: Карта символов = отображение последовательностей членов репертуара абстрактных символов на сериализованные последовательности байтов, соединяющие все четыре уровня за одну операцию
  • TES: Синтаксис кодирования передачи = обратимое преобразование закодированных данных, которые могут содержать или не содержать текстовые данные

Старые протоколы, такие как MI ME используют «кодировку», когда они действительно означают «схему кодировки символов». Первоначально различные кодировки символов рассматривались как независимые репертуары символов, а не как подмножества Unicode.

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

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