Вы не увидите простого ответа, потому что его нет.
Во-первых, Unicode не содержит «каждого символа из каждого языка», хотя, безусловно, пытается.
Юникод сам по себе является отображением, он определяет кодовые точки, а кодовая точка - это число, связанное обычно с символом. Обычно я говорю, потому что есть такие понятия, как объединение персонажей. Вы можете быть знакомы с такими вещами, как акценты или умлауты. Они могут использоваться с другим символом, таким как a
или, u
чтобы создать новый логический символ. Следовательно, символ может состоять из 1 или более кодовых точек.
Чтобы быть полезным в вычислительных системах, нам нужно выбрать представление для этой информации. Это различные кодировки Unicode, такие как utf-8, utf-16le, utf-32 и т. Д. Они отличаются в основном размером их кодовых блоков. UTF-32 - простейшая кодировка, она имеет кодовый блок 32 бита, что означает, что отдельная кодовая точка удобно вписывается в кодовый блок. В других кодировках будут ситуации, когда для кодовой точки потребуется несколько кодовых единиц или эта конкретная кодовая точка вообще не может быть представлена в кодировке (это проблема, например, для UCS-2).
Из-за гибкости объединения символов, даже в данной кодировке число байтов на символ может варьироваться в зависимости от символа и формы нормализации. Это протокол для работы с символами, которые имеют более одного представления (можно сказать, "an 'a' with an accent"
что это 2 кодовые точки, одна из которых представляет собой объединяющий символ или "accented 'a'"
одна кодовая точка).