Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Formatação de linha de comando MySQL com UTF8

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?