Artikelverzeichnis
Wenn der Emoji-Ausdruck in utf8-Codierung gespeichert istMySQL-Datenbankoder MariaDB, kann es nicht angezeigt werden.
Warum wird der in die Datenbank eingegebene Emoji-Ausdruck zu einem Fragezeichen?
Da Emoji-Ausdrücke 4-Byte-Zeichen sind und der utf8-Zeichensatz nur 1-3 Byte Zeichen unterstützt, können Emoji-Ausdrücke nicht in die Datenbank geschrieben werden.
Wie kann das Problem gelöst werden, dass der in die Datenbank eingegebene Emoji-Ausdruck zu einem Fragezeichen wird?
Es gibt 2 Lösungen:
- Geben Sie Text manuell ein und ersetzen Sie Vier-Byte-Zeichen durch benutzerdefinierte Zeichen.
- ändern MySQL Datenbank-Zeichensatz, ändern Sie den Datenbank-Zeichensatz von utf8 auf utf8mb4, unterstützen Sie 1-4 Byte-Zeichen.
Tatsächlich ist die erste Methode zu arbeitsintensiv und nicht ratsam.
Es wird empfohlen, die zweite Lösung zu verwenden, den Zeichensatz der MySQL-Datenbank zu ändern.
Ab MySQL 5.5.3-Version kann die Datenbank den utf4mb8-Zeichensatz von 4 Bytes unterstützen, und ein Zeichen kann bis zu 4 Bytes haben, sodass mehr Zeichensätze unterstützt und auch Emoji-Ausdrücke gespeichert werden können.
- Nach MySQL 5.5.3 können Sie grundsätzlich nahtlos auf den Zeichensatz utf8mb4 upgraden.
- Gleichzeitig ist utf8mb4 mit dem utf8-Zeichensatz kompatibel.
- Die Kodierung, Position und Speicherung von utf8-Zeichen erfolgt in utf8mb4.
- Gleich wie utf8-Zeichensatz, keine Beschädigung vorhandener Daten.
DurchphpMyAdminFür neu erstellte Tabellen in einer neu erstellten Datenbank lautet die Standardzeichencodierung:Latin1
- Diese Codierung kann keine chinesischen und Emoji-Ausdrücke einfügen;
- Sie müssen die Zeichensatzcodierung des Datenbankzeichensatzes und der Tabelle auf utf8mb4 ändern;
- Starten Sie dann MySQL neu, Sie können chinesische und Emoji-Ausdrücke einfügen.
Problemlösung für MySQL-Emoji-Zeichen
1 步:Ändern Sie die MySQL-Konfigurationsdatei my.cnf
- (Windows-Server ist meine.ini,LinuxDer Server ist my.cnf)
- my.cnf-Datei, normalerweise in
/etc/mysql/my.cnfPosition. - CWP-SystemsteuerungDie my.cnf-Datei ist in
/etc/my.cnfPosition.
Nachdem Sie es gefunden haben, fügen Sie bitte den folgenden Inhalt in die folgenden drei Teile ein ▼
[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 步:Starten Sie die MySQL-Datenbank neu
service mysqld restart
Schritt 3: Überprüfen Sie erneut den Zeichensatz und geben Sie ▼ in die SQL-Befehlszeile ein
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_database';
Überprüfen Sie, ob das folgende ▼

Geben Sie den folgenden SQL-Befehl▼ ein
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
Überprüfen Sie, ob es wie folgt ist▼
+--------------------------+--------------------+ | 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 | +--------------------------+--------------------+
Nachdem Sie eine neue Datenbank in phpMyAdmin erstellt haben, müssen SieDatenbankcode anzeigen ▼
SHOW CREATE DATABASE db_name;
- 如:
SHOW CREATE DATABASE test;
Wenn die Datenbankcodierung nicht istutf8mb4, müssen Sie den Datenbankzeichensatz auf ändernutf8mb4 .
Wie ändere ich den Datenbankzeichensatz auf utf8mb4?
Schritt 1: Klicken Sie in phpMyAdmin auf den aktuellen Datenbanknamen und dann auf SQL.
Schritt 2: Geben Sie den folgenden Befehl ein, um den Zeichensatz der Datenbank zu ändernutf8mb4▼
ALTER DATABASE db_name DEFAULT CHARACTER SET utf8mb4
- 如:
ALTER DATABASE test DEFAULT CHARACTER SET utf8mb4;
3 步:Starten Sie die MySQL-Datenbank neu
service mysqld restart
- Das ist es.
Hier sind einige Beispiele für SQL-Befehle:
Ändern Sie den Standardzeichensatz und alle Zeichenspalten der Tabelle auf den neuen Zeichensatz ▼
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;
Wenn Sie nur den Standardzeichensatz der Tabelle ändern▼
ALTER TABLE tbl_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
- 如:
ALTER TABLE logtest DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
Zeichensatz eines Feldes ändern ▼
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;
Tabellencode ▼ anzeigen
SHOW CREATE TABLE tbl_name;
Feldcodes anzeigen ▼
SHOW FULL COLUMNS FROM tbl_name;
Aktuellen Datenbankcode anzeigen ▼
SHOW VARIABLES LIKE 'character_set_%';
- Das mysql-connector-java-Treiberpaket unterstützt nur utf5.1.13mb8 in 4+
Hoffnung Chen Weiliang Blog ( https://www.chenweiliang.com/ ) teilte "Wie speichere ich Emoji in MySQL? Geben Sie das Fragezeichenzeichenproblem des Emoji-Ausdrucks in der Datenbank ein", was für Sie hilfreich ist.
Willkommen, um den Link dieses Artikels zu teilen:https://www.chenweiliang.com/cwl-26592.html
Um weitere versteckte Tricks freizuschalten🔑, treten Sie unserem Telegram-Kanal bei!
Teilen und liken, wenn es Ihnen gefällt! Ihre Shares und Likes sind unsere ständige Motivation!