Director articol
Dacă expresia Emoji este stocată în codificare utf8Baza de date MySQLsau MariaDB, nu poate fi afișat.
De ce expresia Emoji introdusă în baza de date devine un semn de întrebare?
Deoarece expresiile Emoji sunt caractere de 4 octeți, iar setul de caractere utf8 acceptă doar 1-3 octeți de caractere, expresiile Emoji nu pot fi scrise în baza de date.
Cum se rezolvă problema că expresia Emoji introdusă în baza de date devine un semn de întrebare?
Exista 2 solutii:
- Introduceți textul manual, înlocuind caracterele de patru octeți cu caractere personalizate.
- modifica MySQL Setul de caractere al bazei de date, schimbați setul de caractere al bazei de date de la utf8 la utf8mb4, acceptă caractere de 1-4 octeți.
De fapt, prima metodă este prea multă muncă și nu este recomandabilă.
Se recomandă utilizarea a doua soluție, modificarea setului de caractere al bazei de date MySQL.
Începând de la versiunea MySQL 5.5.3, baza de date poate suporta setul de caractere utf4mb8 de 4 octeți, iar un caracter poate avea până la 4 octeți, astfel încât poate suporta mai multe seturi de caractere și, de asemenea, poate stoca expresii Emoji.
- După MySQL 5.5.3, puteți face upgrade fără probleme la setul de caractere utf8mb4.
- În același timp, utf8mb4 este compatibil cu setul de caractere utf8.
- Codificarea, poziția și stocarea caracterelor utf8 sunt în utf8mb4.
- La fel ca setul de caractere utf8, fără deteriorare a datelor existente.
Din cauzaphpMyAdminPentru tabelele nou create într-o bază de date nou creată, codarea implicită a caracterelor este:Latin1
- Această codificare nu poate introduce expresii chinezești și emoji;
- Trebuie să modificați codificarea setului de caractere al setului de caractere al bazei de date și al tabelului în utf8mb4;
- Apoi, reporniți MySQL, puteți introduce expresii chinezești și emoji.
Soluția problemei caracterelor MySQL Emoji
第 1 步 :Modificați fișierul de configurare MySQL my.cnf
- (Serverul Windows este my.ini,LinuxServerul este my.cnf)
- my.cnf, de obicei în
/etc/mysql/my.cnfLocație. - Panoul de control CWPFișierul my.cnf este în
/etc/my.cnfLocație.
După ce îl găsiți, adăugați următorul conținut în următoarele trei părți ▼
[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'
第 2 步 :Reporniți baza de date MySQL
service mysqld restart
Pasul 3: Verificați din nou setul de caractere și introduceți ▼ în linia de comandă SQL
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_database';
Verificați dacă următoarele ▼

Introduceți următoarea comandă SQL▼
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
Verificați dacă este după cum urmează▼
+--------------------------+--------------------+ | 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 | +--------------------------+--------------------+
După crearea unei noi baze de date în phpMyAdmin, trebuieVizualizați codul bazei de date ▼
SHOW CREATE DATABASE db_name;
- 如:
SHOW CREATE DATABASE test;
Dacă codificarea bazei de date nu esteutf8mb4, trebuie să modificați setul de caractere al bazei de date lautf8mb4 .
Cum se modifică setul de caractere al bazei de date la utf8mb4?
Pasul 1: Faceți clic pe numele curent al bazei de date în phpMyAdmin, apoi faceți clic pe SQL.
Pasul 2: Introduceți următoarea comandă pentru a modifica setul de caractere al bazei de dateutf8mb4▼
ALTER DATABASE db_name DEFAULT CHARACTER SET utf8mb4
- 如:
ALTER DATABASE test DEFAULT CHARACTER SET utf8mb4;
第 3 步 :Reporniți baza de date MySQL
service mysqld restart
- Asta e.
Iată câteva exemple de comenzi SQL:
Schimbați setul de caractere implicit și toate coloanele de caractere ale tabelului la noul set de caractere ▼
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;
Dacă modificați doar setul de caractere implicit al tabelului▼
ALTER TABLE tbl_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
- 如:
ALTER TABLE logtest DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
Modificați setul de caractere al unui câmp ▼
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;
Vizualizați codul tabelului ▼
SHOW CREATE TABLE tbl_name;
Vizualizare coduri de câmp ▼
SHOW FULL COLUMNS FROM tbl_name;
Vizualizați codul curent al bazei de date ▼
SHOW VARIABLES LIKE 'character_set_%';
- Pachetul de driver mysql-connector-java acceptă doar utf5.1.13mb8 în 4+
Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) a distribuit „Cum să salvezi Emoji în MySQL? Introduceți baza de date Emoji expression semn de întrebare problema caracterului”, ceea ce vă este util.
Bine ați venit să distribuiți linkul acestui articol:https://www.chenweiliang.com/cwl-26592.html
