O problema de codificação de caracteres MySQL é onde seu banco de dados MySQL faz com que os caracteres UTF8 (como å, ä e ö) sejam exibidos incorretamente. Isso ocorre porque, por padrão, o MySQL usa o conjunto de caracteres latin1. Este problema tornou-se importante devido à natureza global do conteúdo da web nos dias de hoje. Você pode resolvê-lo definindo a codificação de caracteres do MySQL para UTF8. Isso pode ser feito de várias maneiras.
- Execute uma consulta "SET NAMES 'utf8'" no início de cada conexão - isso forçará o MySQL a usar UTF8 durante o tempo de vida dessa conexão. Esta é uma boa opção se você não tiver acesso ao arquivo my.cnf (linux/mac) / my.ini (windows).
- Encontre e edite o arquivo my.cnf (linux/mac) / my.ini (windows) em seu servidor de banco de dados. Adicione as seguintes linhas ao mysqld section :[mysqld] default-character-set=utf8 skip-character-set-client-handshake Agora, se você reiniciar o servidor MySQL, a codificação de caracteres MySQL deve ser o padrão UTF8
- E se você já tiver um banco de dados? Como converter seu conteúdo para UTF8? Você pode usar as 3 consultas a seguir. Substitua DATABASE_NAME, TABLE_NAME e FIELD_NAME pelos seus valores. alterar tabela TABLE_NAME modificar blob FIELD_NAME; alterar banco de dados DATABASE_NAME charset=utf8; alterar tabela TABLE_NAME modificar FIELD_NAME varchar(255) conjunto de caracteres utf8; Converta o campo para BLOB, que é um tipo de campo binário. Em seguida, alteramos o conjunto de caracteres do banco de dados para utf8. Por fim, convertemos nosso campo de volta para texto ou varchar.
Você pode verificar sua codificação de caracteres MySQL com a seguinte consulta.
Codificação de caracteres padrão do MySQL
mysql> show variables like 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | latin1 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)
Codificação de caracteres MySQL necessária
mysql> show variables like 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)
Você também precisará garantir que sua estrutura de programação, como Django, Code Igniter, etc, use a codificação UTF8.