- 1 1. Introdução
- 2 2. Principais Causas de Problemas de Codificação de Caracteres
- 3 3. Entendendo a Configuração de Conjunto de Caracteres do MySQL
- 4 4. Prevenindo Problemas de Codificação de Caracteres
- 5 5. O Que Fazer Se Ocorrer Corrupção de Caracteres
- 6 6. FAQ (Perguntas Frequentes)
- 6.1 Q1: Por que o texto em japonês aparece como “???” no MySQL?
- 6.2 Q2: Como posso mudar o conjunto de caracteres de uma tabela existente?
- 6.3 Q3: Como posso evitar a corrupção de caracteres no prompt de comando do Windows?
- 6.4 Q4: Como posso evitar a corrupção de caracteres em um ambiente Docker?
- 6.5 Q5: Onde está localizado o arquivo de configuração do MySQL?
- 7 7. Resumo
1. Introdução
Ao criar um banco de dados usando MySQL, problemas de codificação de caracteres (moji‑bake) são um dos problemas mais comuns que os usuários encontram. Quando ocorre corrupção de caracteres, os dados não podem ser exibidos ou inseridos corretamente, o que pode interromper significativamente as operações comerciais e a gestão do sistema. Este artigo explica as principais causas dos problemas de codificação de caracteres no MySQL, descreve soluções eficazes e fornece etapas concretas de solução de problemas.
2. Principais Causas de Problemas de Codificação de Caracteres
Os problemas de codificação de caracteres no MySQL podem, em geral, ser classificados nas três categorias a seguir:
Incompatibilidade nas Configurações de Codificação de Caracteres
- O MySQL suporta múltiplos conjuntos de caracteres. Se a codificação de caracteres entre o cliente e o servidor não coincidir, ocorrerá corrupção de caracteres.
Diferenças de Configuração entre Cliente e Servidor
- Se a string enviada pelo cliente (por exemplo, phpMyAdmin ou uma ferramenta de linha de comando) não corresponder à configuração de conjunto de caracteres do servidor, podem surgir problemas.
Configurações Incorretas de Conjunto de Caracteres para Bancos de Dados ou Tabelas
- Se você não especificar o
CHARACTER SETadequado ao criar um banco de dados ou tabela, inconsistências podem surgir posteriormente ao manipular os dados.
3. Entendendo a Configuração de Conjunto de Caracteres do MySQL
Compreender corretamente a configuração de conjunto de caracteres do MySQL é o primeiro passo para prevenir a corrupção de caracteres. Vamos revisar os itens a seguir.
Principais Variáveis de Configuração de Conjunto de Caracteres
character_set_server: O conjunto de caracteres padrão para todo o servidorcharacter_set_client: O conjunto de caracteres das strings enviadas pelo clientecharacter_set_database: O conjunto de caracteres padrão para o banco de dados
Como Verificar as Configurações Atuais
- Execute o comando a seguir para verificar a configuração atual do conjunto de caracteres.
SHOW VARIABLES LIKE 'character_set%';
- Com base nos resultados exibidos, identifique quaisquer incompatibilidades de configuração.
4. Prevenindo Problemas de Codificação de Caracteres
Para prevenir a corrupção de caracteres antecipadamente, a configuração correta e a preparação do ambiente são essenciais.
Ajustando o Arquivo de Configuração do MySQL (my.cnf/my.ini)
- Para modificar as configurações do lado do servidor, edite
my.cnfoumy.iniconforme mostrado abaixo.[mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_general_ci
Definindo a Codificação de Caracteres para Bancos de Dados e Tabelas
- Ao criar um banco de dados, especifique explicitamente o conjunto de caracteres usando o comando a seguir.
CREATE DATABASE sample_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
- Para modificar uma tabela existente:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4;
Ajustando o Ambiente do Cliente
- Ao usar uma ferramenta de linha de comando, especifique o conjunto de caracteres no momento da conexão.
mysql --default-character-set=utf8mb4 -u root -p

5. O Que Fazer Se Ocorrer Corrupção de Caracteres
Se surgirem problemas de codificação de caracteres, siga as etapas abaixo para resolver a situação.
Verificar a Configuração
- Use o comando
SHOW VARIABLESapresentado anteriormente para confirmar os valores atuais das configurações.
Backup e Restauração de Dados
- Ao fazer backup dos dados, certifique‑se de especificar explicitamente o conjunto de caracteres.
mysqldump --default-character-set=utf8mb4 -u root -p database_name > backup.sql
- Especifique o mesmo conjunto de caracteres ao restaurar.
mysql --default-character-set=utf8mb4 -u root -p database_name < backup.sql
Etapas de Solução de Problemas
- Verifique a configuração usando o comando
SHOW VARIABLES, atualize-a para os valores corretos, se necessário, e teste novamente. Revise os arquivos de log e mensagens de erro para identificar a causa raiz.
6. FAQ (Perguntas Frequentes)
Q1: Por que o texto em japonês aparece como “???” no MySQL?
- A configuração de conjunto de caracteres do cliente ou do servidor pode estar definida como
latin1ou outro encoding incompatível. Altere a configuração parautf8mb4.
Q2: Como posso mudar o conjunto de caracteres de uma tabela existente?
- Você pode mudá-lo usando o seguinte comando.
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4;
Q3: Como posso evitar a corrupção de caracteres no prompt de comando do Windows?
- Use o comando
chcp 65001para mudar a página de código para UTF-8.
Q4: Como posso evitar a corrupção de caracteres em um ambiente Docker?
- Crie um arquivo
my.cnfno host e monte‑o no local apropriado dentro do contêiner para aplicar a configuração.
Q5: Onde está localizado o arquivo de configuração do MySQL?
- No Linux, geralmente está em
/etc/my.cnfou/etc/mysql/my.cnf. No Windows, está localizado dentro do diretório de instalação do MySQL.
7. Resumo
Problemas de codificação de caracteres no MySQL podem ser resolvidos através de configuração adequada e solução de problemas sistemática. Use os passos descritos neste artigo para verificar e ajustar suas configurações conforme necessário. Ao revisar sua configuração regularmente, você pode minimizar o risco de corrupção de caracteres e manter um ambiente de banco de dados estável.


