Каково различие между “кодированием”, “набором символов” и “кодовой страницей”?

Я действительно пытаюсь поправиться с этим материалом. Я довольно функционален с понятиями интернационализации как это, но я должен получить лучший фон на теории позади него.

Я прочитал статью Spolsky, но я все еще неясен, потому что эти три условия привыкают попеременно МНОГО - даже в той статье. Я думаю, что по крайней мере два из них говорят о том же самом.

Я подозреваю, что высокий процент разработчиков проваливает их путь через этот материал ежедневно. Я не хочу быть одним из тех разработчиков больше.

25
задан Deane 9 August 2010 в 15:17
поделиться

4 ответа

«Набор символов» - это просто что он говорит: правильно определенный список различных символов.

«Кодировка» - это соответствие между набором символов (сегодня обычно используется Unicode) и техническим представлением символов (обычно на основе байтов).

UTF-8 - это кодировка, а не набор символов. Это кодировка набора символов Unicode (*).

Путаница возникает из-за того, что большинство других хорошо известных кодировок (например, ISO-8859-1) начинались как отдельные наборы символов.Затем, когда Unicode появился как надмножество большинства этих наборов символов, стало возможным думать о них как о разных (но частичных) кодировках одного и того же набора символов (Unicode), а не как об отдельных наборах символов. Такой взгляд на них позволяет легко конвертировать между ними через Unicode, что было бы невозможно, если бы они были просто изолированными наборами символов. Но все же имеет смысл называть их наборами символов, поэтому можно использовать любой термин.

«Кодовая страница» - это термин, произошедший от IBM, где она выбирала, какой набор символов будет отображаться. Этот термин продолжал использоваться DOS, а затем Windows, вплоть до Windows с поддержкой Unicode, где он просто действует как кодировка с пронумерованным идентификатором. Хотя нумерованная «кодовая страница» - это идея, по сути не ограниченная Microsoft, сегодня этот термин почти всегда будет означать просто кодировку, о которой знает Windows.

Когда говорят о кодовой странице «какое-то число», обычно говорят о кодировке, специфичной для Windows, в отличие от кодировки, разработанной органом по стандартизации. Например, кодовая страница 28591 обычно упоминается не под этим именем, а просто «ISO-8859-1». Специфичная для Windows западноевропейская кодировка, основанная на ISO-8859-1 (с несколькими дополнительными символами, заменяющими некоторые из ее управляющих кодов), обычно называется «кодовой страницей 1252».

[*: Все UTF являются кодировками, а не наборами символов, но такие вещи не являются исключительными для Unicode.Например, японский стандарт JIS X 0208 определяет набор символов и две разные байтовые кодировки для него: несколько неприятное кодирование на основе старших байтов (Shift-JIS) и ужасающее кодирование на основе переключения перехода (JIS ').]

36
ответ дан 28 November 2019 в 20:40
поделиться

Глава о Юникоде в этой книге, Advanced Perl Programming, содержит лучшее описание кодирования, наборов символов и других сущностей Юникода, которое я встречал. К сожалению, я не думаю, что она доступна бесплатно в сети.

2
ответ дан 28 November 2019 в 20:40
поделиться

Набор символов - это просто набор символов, которые можно использовать.
Каждый из этих символов сопоставлен с целым числом, называемым кодовой точкой.
То, как эти кодовые точки представлены в памяти, является кодировкой. Кодировка - это просто метод преобразования кодовой точки (U+0041 - кодовая точка Юникода для символа 'A') в необработанные данные (биты и байты).

6
ответ дан 28 November 2019 в 20:40
поделиться

Я думал, что статья Джоэла в значительной степени правильная - это история эволюции наборов символов и хранилища, которая привела к этому.

FWIW, с моей чрезмерно упрощенной точки зрения

  • Наборы символов (ASCII, EBCDIC, UNICODE) будут числовым представлением символов, независимо от соображений хранения
  • Кодирование будет относиться к эффективному хранению символов, ANSI, UTF- 7, UTF-8 и т. Д., Для файла, по сети и т. Д.
  • Кодовая страница будет «клуджем», необходимым, когда потребность в добавлении новых символов (без увеличения емкости памяти) означает, что (определенные) символы были можно узнать только в дополнительном контексте кодовой страницы.

IMHO Википедия в настоящее время не помогает, определяя кодовую страницу как «другое имя для кодировки символов». и перенаправление «набора символов» на «кодировку символов»

4
ответ дан 28 November 2019 в 20:40
поделиться
Другие вопросы по тегам:

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