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

Como resolver o problema de codificação de caracteres do MySQL?


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.
  1. 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).
  2. 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
  3. 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.