Você não verá uma resposta simples porque não há uma.
Primeiro, o Unicode não contém "todos os caracteres de todos os idiomas", embora com certeza tente.
O próprio Unicode é um mapeamento, define pontos de código e um ponto de código é um número, geralmente associado a um caractere. Eu digo geralmente porque existem conceitos como combinar personagens. Você pode estar familiarizado com coisas como sotaques ou trema. Esses podem ser usados com outro caractere, como um a
ou a, u
para criar um novo caracter lógico. Um caractere, portanto, pode consistir em 1 ou mais pontos de código.
Para ser útil em sistemas de computação, precisamos escolher uma representação para essas informações. Essas são as várias codificações unicode, como utf-8, utf-16le, utf-32 etc. Elas se distinguem principalmente pelo tamanho de suas unidades de código. UTF-32 é a codificação mais simples, possui uma unidade de código de 32 bits, o que significa que um ponto de código individual se encaixa confortavelmente em uma unidade de código. As outras codificações terão situações em que um ponto de código precisará de várias unidades de código, ou esse ponto de código específico não poderá ser representado na codificação (este é um problema, por exemplo, com o UCS-2).
Devido à flexibilidade de combinar caracteres, mesmo dentro de uma determinada codificação, o número de bytes por caractere pode variar dependendo do caractere e da forma de normalização. Este é um protocolo para lidar com caracteres que possuem mais de uma representação (você pode dizer "an 'a' with an accent"
quais são 2 pontos de código, um dos quais é um caractere de combinação ou "accented 'a'"
qual é um ponto de código).