qual é a diferença entre utf8 e latin1?
qual é a diferença entre utf8 e latin1?
Respostas:
O UTF-8 está preparado para dominar o mundo, o Latin1 não.
Se você estiver tentando armazenar caracteres não latinos, como chinês, japonês, hebraico, russo, etc, usando a codificação Latin1, eles acabarão como mojibake . Você pode achar útil o texto introdutório deste artigo (e ainda mais se conhecer um pouco de Java).
Observe que o suporte completo a UTF-8 de 4 bytes foi introduzido apenas no MySQL 5.5. Antes dessa versão, ele só subia até 3 bytes por caractere, não 4 bytes por caractere. Portanto, ele suportava apenas o plano BMP e não, por exemplo, o plano Emoji. Se você deseja suporte completo a UTF-8 de 4 bytes, atualize o MySQL para pelo menos 5,5 ou opte por outro RDBMS como o PostgreSQL. No MySQL 5.5+ é chamado utf8mb4
.
VARBINARY
vez de VARCHAR
e decodificar / codificar na camada de negócios, mas isso é hacky. Considere fazer uma nova pergunta, talvez haja maneiras melhores.
Em latin1, cada caractere tem exatamente um byte de comprimento. No utf8, um caractere pode consistir em mais de um byte. Consequentemente, utf8 tem mais caracteres que latin1 (e os caracteres que eles têm em comum não são necessariamente representados pela mesma sequência de bytes / bytes).
binary
agrupar ...? e qual é o melhor para campos numéricos / inglês: ascii_general_ci
ou ascii_bin
?