Atualização:
Resposta curta - Você quase sempre deve usar o
utf8mb4
conjunto de caracteres e utf8mb4_unicode_ci
agrupamento. Para alterar o banco de dados:
ALTER DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Ver:
-
Comentário de Aaron sobre esta resposta Como fazer o MySQL lidar com UTF-8 corretamente
-
Qual é a diferença entre utf8_general_ci e utf8_unicode_ci
-
Guia de conversão:https://dev.mysql. com/doc/refman/5.5/en/charset-unicode-conversion.html
Resposta original:
MySQL 4.1 e superior tem um conjunto de caracteres padrão de UTF-8. Você pode verificar isso em seu
my.cnf
arquivo, lembre-se de definir ambos cliente e servidor (default-character-set
e character-set-server
). Se você tiver dados existentes que deseja converter para UTF-8, despeje seu banco de dados e importe-o de volta como UTF-8, certificando-se de:
- use
SET NAMES utf8
antes de consultar/inserir no banco de dados - use
DEFAULT CHARSET=utf8
ao criar novas tabelas - neste ponto, seu cliente e servidor MySQL devem estar em UTF-8 (consulte
my.cnf
). lembre-se de que todas as linguagens que você usa (como PHP) também devem ser UTF-8. Algumas versões do PHP usarão sua própria biblioteca cliente MySQL, que pode não estar ciente de UTF-8.
Se você deseja migrar os dados existentes, lembre-se de fazer backup primeiro! Muitos cortes estranhos de dados podem acontecer quando as coisas não saem como planejado!
Alguns recursos:
- concluir migração UTF-8 (cdbaby.com)
- artigo sobre prontidão UTF-8 de funções php (observe que algumas dessas informações estão desatualizadas)