Hoje eu estava trabalhando em um projeto em CakePHP 2.1 e quando eu fazia:

meu resultado vinha cheio de erros de codificação onde as letras estavam acentuadas.

Como de costume, fui verificar o cabeçalho do layout, para ter certeza que tinha usado UTF-8:

Depois, fui conferir no core.php se também estava definido UTF-8:

Então, fui conferir a conexão com o banco no database.php para ter certeza que estava em UTF-8:

E para o meu ódio, sim, estava tudo ok em todos os arquivos. Mas então o que poderia ser? Só se meu MySQL não estava configurado com utf-8, nem minha tabela e campos…
Para fazer essa verificação, rodei os seguintes comandos no console do MySQL:

+————————–+—————————-+

| Variable_name | Value |
+————————–+—————————-+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+————————–+—————————-+

+———————-+——————-+
| Variable_name | Value |
+———————-+——————-+
| collation_connection | latin1_swedish_ci |
| collation_database | utf8_general_ci |
| collation_server | latin1_swedish_ci |
+———————-+——————-+

Encontrado meu problema, ainda tinham coisas para serem configuradas para UTF-8. Para fazer esta configuração, foi só rodar o comando abaixo no console do MySQL:

exemplo:

Com isto, consegui resolver meu problema de codificação, lembrando que o que já estava cadastrado em latin1 precisou ser convertido para utf-8.

One thought on “Configurando encoding no MySQL

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *