Является UTF-8 кодировка или набор символов?



Я думал, что имя набора символов было " Unicode "и что" UTF-8 "было именем определенной кодировки набора символов Unicode, но я часто вижу термины" кодировка "и" кодировка", используемые взаимозаменяемо, когда речь идет о UTF-8.



Например,



<meta charset="UTF-8">


Vs



<?xml version="1.0" encoding="UTF-8" ?>
596   4  

4 ответов:

Является ли UTF-8 кодировкой или набором символов?

UTF-8 является кодировкой, и этот термин используется в RFC, который определяет его, который цитируется ниже.


Я часто вижу термины" кодирование "и" кодировка", используемые взаимозаменяемо

До Unicode, если вы хотели использовать алфавит†, такой как кириллица или греческий, вам нужно было использовать кодировку, которая кодировала только символы в этом алфавите. Таким образом, термины кодирование и кодировка были часто сливаются, но они означают разные вещи.

Сейчас, однако, Unicode обычно является единственным набором символов, о котором вам нужно беспокоиться, поскольку он содержит символы для большинства письменных языков, с которыми вам придется иметь дело, за исключением клингонского.

† - Алфавит, разновидность набора символов , где символы непосредственно соответствуют звукам в разговорном языке.


Набор символов -это отображение кодовых единиц (целых чисел) в символы, символы, глифы или другие знаки. на письменном языке. Unicode - это набор символов, который отображает 21B целых чисел в кодовые точки unicode. Глоссарий консорциума Unicode описывает его следующим образом:

Unicode

    Стандарт для цифрового представления символов, используемых при написании на всех языках мира. Unicode предоставляет единые средства для хранения, поиска и обмена текстами на любом языке. Он используется всеми современными компьютерами и является основой для обработки текста на интернет. Unicode разрабатывается и поддерживается консорциумом Unicode: http://www.unicode.org .
  1. ярлык, применяемый к стандартам интернационализации и локализации программного обеспечения, разработанным и поддерживаемым консорциумом Unicode.

Кодировка - это отображение строк в строки. UTF-8-это кодировка, которая отображает строки байтов (8B целых чисел) в строки кодовых точек (21B целых чисел). Консорциум Unicode называет его a "схема кодирования символов" и она определена в RFC 3629.

Однако первоначально предложенные кодировки ПСК были следующими: не совместим со многими текущими приложениями и протоколами, и это привело к разработке UTF-8

UTF-8 являетсякодировкой , в том смысле, что онакодирует Последовательность абстрактных целых чисел – кодовые точкиunicode , которые обозначают абстрактные символы – в набор байтов. (Через очки unicode можно сказать, что "набор символов", такой как ISO-8859-1 , также является табличным "кодированием", в том смысле, что он кодирует небольшое количество кодовых точек в байтах, но это граничит с злоупотреблением терминологией и, вероятно, не очень полезный).

Последовательность целых чисел является (в некотором фундаментальном смысле) "строкой Юникода", но для того, чтобы сохранить их на диске или отправить по сети, вам нужно закодировать их в виде последовательности байтов. UTF-8-это один способ сделать это, UTF-16-другой: одна строка unicode будет представлена как два разных потока байтов, если она закодирована двумя разными способами.


Здесь есть несколько прекрасных ответов, но только вчера я потратил некоторое время, пытаясь сварить это выпуск до некоторого минимального размера, так что это дает счастливую возможность повторно использовать этот текст:

Статья Джоэла Сполски о абсолютном минимуме каждый разработчик программного обеспечения абсолютно, положительно должен знать о Unicode и наборах символов (никаких оправданий!) довольно хорошо, я думаю. Это (несомненно) упоминалось здесь раньше, но это стоит повторить. Хотя я думаю, что это не совсем минимально.

В тех нескольких случаях, когда мне приходилось объяснять коллеге "unicode", это было понятие абстрактных кодовых точек Юникода, которые оказались ключом к освещению. Структура моих успешных объяснений была примерно такой:

  • Консорциум Unicode (с большим трудом и переговорами) сумел дать число большой части используемых символов. Эти числа (на жаргоне) называются "кодовыми точками".

  • 'буква А' имеет кодовую точку, и это не зависит от шрифтов. Таким образом, " А " и " А " имеют различные кодовые точки, но римский, жирный, курсив, засечки, без засечек (et very much cetera) не различаются. Японские иероглифы кандзи, тенгвар и клингон (например) имеют кодовые точки (это привлекает внимание).

  • "строка Юникода" - это (концептуально) последовательность кодовых точек. Это последовательность математических целых чисел. Не имеет смысла спрашивать, являются ли они байтами, 2-байтовыми или 4-байтовыми словами; последовательность не имеет ничего общего с компьютерами.

  • Если, однако, если вы хотите отправить эту последовательность целых чисел кому-то или сохранить ее на диске компьютера, вы должны сделать что-то, чтобы закодировать ее. Вы также можете записать последовательность чисел на листе бумаги, но давайте специализируемся на компьютерах. Если вы хотите сохранить или отправить это на компьютере, вы должны преобразовать эти целые числа в последовательность байтов. Для этого существует несколько процедур, и каждая из них называется "кодированием". Одной из таких "кодировок" является УТФ-8.

  • Когда вы "читаете файл Unicode", вы начинаете с последовательности байтов на диске и концептуально заканчиваете последовательностью целых чисел. Если указано, что "файл unicode" каким-то образом должен быть закодирован в UTF-8, то вы должны декодировать эту последовательность байтов, чтобы получить последовательность целых чисел, используя алгоритм, определенный в RFC 3629. Все последующие операции над "строкой Юникода" определяются в терминах последовательности кодовых точек и того факта, что он начался, на диске, как "UTF-8" забыт.

Стандарт Unicode называет егоформой кодирования или схемой кодирования . Unicode имеет один набор символов (известный как набор символов Unicode, или универсальный набор символов), и все формы кодирования UTF и схемы кодирования могут кодировать все символы в этом наборе.

Как и во многих других терминах, программисты, похоже, имеют тенденцию просто присваивать термины здесь и там, и это еще один пример этого.

UTF-8-это кодировка. Однако кодировки часто называют наборами символов, и поэтому многие протоколы используют имя параметра charset для параметра, который задает кодировку символов. Таким образом, charset - это просто идентификатор.

Comments

    Ничего не найдено.