Resposta curta
Inicie o cliente com a opção
--default-character-set=utf8
:mysql --default-character-set=utf8
Você pode definir isso como padrão no
/etc/mysql/my.cnf
Arquivo. [mysql]
default-character-set=utf8
A resposta curta não funcionou, leia abaixo
O comando acima força o
character_set_client
, character_set_connection
e character_set_results
variáveis de configuração para serem utf8
. Para verificar os valores de todas as variáveis de configuração relacionadas ao conjunto de caracteres, você pode executar:
show variables like '%char%';
O
character_set_database
fornece o conjunto de caracteres do banco de dados atual (esquema) em que você está. O esquema e as tabelas são criados por padrão com o conjunto de caracteres especificado no character_set_server
, a menos que seja especificado explicitamente no CREATE
demonstração. O
character_set_server
pode ser alterado no my.cnf
Arquivo:[mysqld]
character-set-server = utf8
Além disso, tabelas e colunas podem ter seu próprio charset que pode ser diferente de sua tabela ou esquema pai. Para verificar especificamente os valores de cada tabela e coluna em um banco de dados, veja esta resposta:Como vejo qual conjunto de caracteres é um banco de dados/tabela/coluna MySQL?
Se você deseja alterar o conjunto de caracteres de tabelas e colunas existentes, consulte esta resposta:Como converter todo um conjunto de caracteres e agrupamento de banco de dados MySQL para UTF-8?
Mais informações sobre conjuntos de caracteres de conexão na documentação do mysql .
Tudo está definido como utf8, mas ainda vejo caracteres estranhos
Mesmo que todas as variáveis de charsets, tabelas e colunas estejam definidas como
utf8
, pode haver casos em que você veja caracteres estranhos na tela. Por exemplo, alguém pode ter escrito caracteres Unicode em um utf8
coluna, por meio de um cliente com latin1
conexão (por exemplo, executando mysql --default-character-set=latin1
). Nesse caso, você precisa se conectar ao banco de dados com o mesmo charset em que os valores foram gravados. Você também pode recuperá-los e reescrevê-los por meio da codificação correta. OBSERVAÇÃO :Como os comentários apontam, o mysql
utf8
codificação não é uma implementação verdadeira e completa do UTF-8. Se for necessária uma implementação completa do UTF-8, pode-se usar o utf8mb4
conjunto de caracteres:mysql --default-character-set=utf8mb4
Mais informações aqui:Qual é a diferença entre os conjuntos de caracteres utf8mb4 e utf8 no MySQL?