2
respostas

Uma dica sobre o CHARACTER SET e o COLLATE

Quando possível, prefiram sempre "utf8mb4" como CHARSET padrão e "utf8mb4_unicode_ci" ou "utf8mb4_general_ci" como COLLATE

O motivo para isso, é que a codificação ASCII define apenas 128 símbolos. O que funciona bem para o inglês. Neste padrão, os caracteres ocupam apenas 1 byte (8 bits). Onde o primeiro bit é sempre 0. De forma a manter a compatibilidade com o padrão ASCII, o padrão UTF-8 definiu os primeiros 128 símbolos exatamente iguais ao ASCII. Assim, quando um caractere que não está presente nesse padrão se faça necessário, o UTF-8 muda o valor do primeiro bit para 1.

O problema é que o MySQL não aderiu completamente ao padrão UTF-8. Implementou apenas símbolos de até 3 bytes e deixou o resto de fora. O que se declara como utf8 no mysql não exatamente utf-8 mas apenas um pedaço dele.

Para resolver o problema, a partir da versão 5.5 o MySQL implementou o padrão completo indo de 1 até 4 bytes. E como já havia usado o nome utf8, chamou a nova implementação de utf8mb4. Ou seja, o utf8 do MySQL não é UTF-8 e o utf8mb4 segue totalmente o padrão UTF-8.

CREATE SCHEMA `sucos2` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ;
2 respostas

Olá Patrício, tudo bem?

Foi bem legal você ter compartihado aqui com a gente essa dica sobre o CHARACTER SET e o COLLATE no MySQL, poderá ajudar muitos alunos que tenham alguam dúvida ou dificuldade.

Continue assim, qualquer dúvida é só falar e bons estudos!

Ótima dica, sou iniciante, sem dúvida ainda não sabia e usarei bastante.

Obrigado.