Artigo Diretório
- 1 Por que a expressão Emoji inserida no banco de dados se torna um caractere de ponto de interrogação?
- 2 Como resolver o problema de que a expressão Emoji inserida no banco de dados se torna um caractere de ponto de interrogação?
- 3 Solução de problema de caractere MySQL Emoji
- 4 Como modificar o conjunto de caracteres do banco de dados para utf8mb4?
Se a expressão Emoji estiver armazenada na codificação utf8banco de dados MySQLou MariaDB, ele não pode ser exibido.
Por que a expressão Emoji inserida no banco de dados se torna um caractere de ponto de interrogação?
Como as expressões Emoji são caracteres de 4 bytes e o conjunto de caracteres utf8 suporta apenas 1-3 bytes de caracteres, as expressões Emoji não podem ser gravadas no banco de dados.
Como resolver o problema de que a expressão Emoji inserida no banco de dados se torna um caractere de ponto de interrogação?
Existem 2 soluções:
- Digite o texto manualmente, substituindo caracteres de quatro bytes por caracteres personalizados.
- modificar MySQL Conjunto de caracteres do banco de dados, altere o conjunto de caracteres do banco de dados de utf8 para utf8mb4, suporte caracteres de 1-4 bytes.
Na verdade, o primeiro método dá muito trabalho e não é aconselhável.
Recomenda-se usar a segunda solução, modificar o conjunto de caracteres do banco de dados MySQL.
A partir da versão MySQL 5.5.3, o banco de dados pode suportar o conjunto de caracteres utf4mb8 de 4 bytes, e um caractere pode ter até 4 bytes, para que possa suportar mais conjuntos de caracteres e também armazenar expressões Emoji.
- Após o MySQL 5.5.3, você pode basicamente atualizar para o conjunto de caracteres utf8mb4.
- Ao mesmo tempo, utf8mb4 é compatível com o conjunto de caracteres utf8.
- A codificação, posição e armazenamento de caracteres utf8 estão em utf8mb4.
- Igual ao conjunto de caracteres utf8, sem danos aos dados existentes.
Devido aphpMyAdminPara tabelas recém-criadas em um banco de dados recém-criado, a codificação de caracteres padrão é:Latin1
- Essa codificação não pode inserir expressões em chinês e emoji;
- Você precisa alterar a codificação do conjunto de caracteres do conjunto de caracteres e da tabela do banco de dados para utf8mb4;
- Em seguida, reinicie o MySQL, você pode inserir expressões chinesas e emoji.
Solução de problema de caractere MySQL Emoji
Etapa 1:Modifique o arquivo de configuração do MySQL my.cnf
- (O servidor Windows é my.ini,LinuxO servidor é meu.cnf)
- arquivo my.cnf, geralmente em
/etc/mysql/my.cnf
Localização. - Painel de controle CWPO arquivo my.cnf, está em
/etc/my.cnf
Localização.
Depois de encontrá-lo, adicione o seguinte conteúdo nas três partes a seguir ▼
[client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4'
Etapa 2:Reinicie o banco de dados MySQL
service mysqld restart
Etapa 3: verifique o conjunto de caracteres novamente e digite ▼ na linha de comando SQL
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_database';
Verifique se o seguinte ▼
Digite o seguinte comando SQL▼
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
Verifique se é o seguinte▼
+--------------------------+--------------------+ | Variable_name | Value | +--------------------------+--------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8 | | collation_connection | utf8mb4_unicode_ci | | collation_database | utf8mb4_unicode_ci | | collation_server | utf8mb4_unicode_ci | +--------------------------+--------------------+
Após criar um novo banco de dados no phpMyAdmin, você deveVer código do banco de dados ▼
SHOW CREATE DATABASE db_name;
- 如:
SHOW CREATE DATABASE test;
Se a codificação do banco de dados não forutf8mb4
, você deve modificar o conjunto de caracteres do banco de dados parautf8mb4
.
Como modificar o conjunto de caracteres do banco de dados para utf8mb4?
Etapa 1: clique no nome do banco de dados atual no phpMyAdmin e clique em SQL.
Etapa 2: Digite o seguinte comando para modificar o conjunto de caracteres do banco de dados parautf8mb4
▼
ALTER DATABASE db_name DEFAULT CHARACTER SET utf8mb4
- 如:
ALTER DATABASE test DEFAULT CHARACTER SET utf8mb4;
Etapa 3:Reinicie o banco de dados MySQL
service mysqld restart
- É isso.
Aqui estão alguns exemplos de comandos SQL:
Altere o conjunto de caracteres padrão e todas as colunas de caracteres da tabela para o novo conjunto de caracteres ▼
ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
- 如:
ALTER TABLE logtest CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
Se você modificar apenas o conjunto de caracteres padrão da tabela▼
ALTER TABLE tbl_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
- 如:
ALTER TABLE logtest DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
Modifique o conjunto de caracteres de um campo ▼
ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name
- 如:
ALTER TABLE logtest CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;
Ver código da tabela ▼
SHOW CREATE TABLE tbl_name;
Visualizar códigos de campo ▼
SHOW FULL COLUMNS FROM tbl_name;
Veja o código do banco de dados atual ▼
SHOW VARIABLES LIKE 'character_set_%';
- O pacote de driver mysql-connector-java suporta apenas utf5.1.13mb8 em 4+
Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) compartilhou "Como salvar Emoji no MySQL? Digite o problema do caractere de ponto de interrogação da expressão Emoji do banco de dados", o que é útil para você.
Bem-vindo a compartilhar o link deste artigo:https://www.chenweiliang.com/cwl-26592.html
Bem-vindo ao canal Telegram do blog de Chen Weiliang para receber as últimas atualizações!
📚 Este guia contém um valor enorme, 🌟Esta é uma oportunidade rara, não perca! ⏰⌛💨
Compartilhe e curta se gostar!
Seus compartilhamentos e curtidas são nossa motivação contínua!