MB_CUR_MAX
é definido pela glibc como 'uma expressão inteira positiva que é o número máximo de bytes em um caractere multibyte no código do idioma atual.'
Se eu imprimir o valor eu recebo 1
. Presumo que isso ocorre porque C usa a C
localidade por padrão, mesmo que a localidade do meu sistema seja en_US.UTF-8
.
Se eu adicionar setlocale(LC_ALL, "")
ao meu programa, que deve permitir o uso da localidade do ambiente, ele MB_CUR_MAX
se tornará 6
.
Agora minha pergunta é: por que 6? UTF-8 não é uma codificação com 1 a 4 bytes por ponto de código?
De acordo com a Wikipedia , o UTF-8 realmente precisava de até 6 bytes até 2003, quando a RFC 3629 adicionou algumas restrições: