E Agora o que usar? UTF-8 x UTF8MB4 - Xmd Tecnologia
Xmd Tecnologia
E Agora o que usar? UTF-8 x UTF8MB4
Você já tentou importar feeds de noticias, ou postagens com emoticons no seu Schema Mysql?
Se já tentou vai saber o que estou falando, que o UTF-8 do Mysql não é o UTF-8 de fato completo, ao criar um schema no Mysql e defini-lo como UTF-8 ainda que seje utf8_unicode_ci, você não esta criando um schema totamente compativel com todos caracteres.
A Oracle mantenedora do Mysql, lançou na versão 5.5 do Mysql um novo UTF8 um tanto estranho não, já que aprendemos que UTF8 é capaz de suportar todos os caracteres. Mas na verdade ela lançou uma correção para que realmente exista o UTF8 dentro do Mysql, como já havia utilizado o titulo de UTF8 no Mysql então a Oracle lançou o UTF8MB4 que segue agora os padrões completos do UTF-8.
Mas você deve esta se perguntando trabalho a anos com utf8_unicode_ci no meu banco de dados e nunca encontrei imcompatibilidade, certo o momento mais critico e desesperador é quando seu sistema tem que receber outros caracteres como por exemplo, muito utilizado hoje na web os emoticons, se fizer o teste no seu Mysql vai descobrir que ele não vai cadastrar, porque o utf8_unicode_ci ele suporta apenas 3 bytes enquanto os emoticons tem 4 bytes. Nossa mas e agora como vou resolver isso? Não se desespere você pode facilmente resolver isso, pois o UTF8MB4 suporto tudo do utf8_unicode_ci, e agora vou ensinar você que tem um schema Mysql com codificação utf8_unicode_ci, migrar para UTF8MB4.
Vamos primeiro definir a codificação de conexão utf8mb4 e, em seguida, alterar o conjunto de caracteres do banco de dados e colação para ele:
(Substituindo database_name pelo nome do banco de dados.)
Em seguida, precisamos converter as tabelas relevantes para utf8mb4 / utf8mb4_unicode_ci (você precisará executar isso para cada tabela):
(Substituindo table_name com o nome da tabela do banco de dados.)
Finalmente, precisamos atualizar o conjunto de caracteres e o agrupamento para a(s) coluna(s):
Leia o último comando cuidadosamente, pois ele precisará ser modificado de acordo com suas necessidades específicas. O importante a notar é o CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci.
(Como com os outros comandos que você precisa substituir table_name e column_name adequadamente.)
Tenha em mente que a mudança de utf8 que utfmb4 afeta o comprimento máximo de colunas e chaves de índice. Os comprimentos máximos das colunas permanecerão inalterados ao modificar as tabelas com os comandos discutidos aqui; Mas em termos de caracteres reais, a quantidade que pode ser armazenada é reduzida.
Esta é uma conseqüência da mudança de ser capaz de armazenar apenas 3 bytes até 4! Talvez seja necessário atualizar esses comprimentos se isso for relevante para você.
Pode ser uma boa idéia para certificar-se de cada tabela que foi convertido é reparado e otimizado após fazer as alterações acima. Você pode executar o seguinte para cada tabela modificada:
Como alternativa, use o mysqlcheck para reparar e otimizar tudo de uma só vez
Tudo deve estar pronto agora, mas não se esqueça de atualizar como seu aplicativo se conecta ao banco de dados para que ele use a nova codificação. Por exemplo, no CakePHP 3 a codificação da fonte de dados precisa ser atualizada para utf8mb4:
Devemos agora ser bom para ir e começar a salvar tweets contendo emoticons (ou qualquer outra coisa usá-los).
Espero que isso tenha sido informativo e útil para você.
Bora nosso sucesso nos espera ;)
Cursos EAD de Desenvolvimento Web, Php Profissional, Html5, Css3, Jquery, Configuração de Servidores e Muito Mais!