Artikel Directory
Als de Emoji-expressie is opgeslagen in utf8-coderingMySQL-databaseof MariaDB, kan het niet worden weergegeven.
Waarom wordt de Emoji-uitdrukking die in de database is ingevoerd, een vraagteken?
Omdat Emoji-expressies 4-byte-tekens zijn en de utf8-tekenset slechts 1-3 bytes aan tekens ondersteunt, kunnen Emoji-expressies niet in de database worden geschreven.
Hoe het probleem op te lossen dat de Emoji-uitdrukking die in de database is ingevoerd, een vraagteken wordt?
Er zijn 2 oplossingen:
- Voer tekst handmatig in en vervang vier-byte-tekens door aangepaste tekens.
- aanpassen MySQL Database-tekenset, verander de database-tekenset van utf8 in utf8mb4, ondersteuning voor 1-4 byte-tekens.
In feite is de eerste methode te veel werk en niet aan te raden.
Het wordt aanbevolen om de tweede oplossing te gebruiken, de tekenset van de MySQL-database te wijzigen.
Vanaf de MySQL 5.5.3-versie kan de database de utf4mb8-tekenset van 4 bytes ondersteunen, en een teken kan maximaal 4 bytes hebben, zodat het meer tekensets kan ondersteunen en ook Emoji-expressies kan opslaan.
- Na MySQL 5.5.3 kunt u in principe naadloos upgraden naar de utf8mb4-tekenset.
- Tegelijkertijd is utf8mb4 compatibel met de utf8-tekenset.
- De codering, positie en opslag van utf8-tekens zijn in utf8mb4.
- Hetzelfde als utf8-tekenset, geen schade aan bestaande gegevens.
VanwegephpMyAdminVoor nieuw gemaakte tabellen in een nieuw gemaakte database is de standaard tekencodering:Latin1
- Deze codering kan geen Chinese en Emoji-uitdrukkingen invoegen;
- U moet de tekensetcodering van de databasetekenset en tabel wijzigen in utf8mb4;
- Start vervolgens MySQL opnieuw, u kunt Chinese en Emoji-expressies invoegen.
MySQL Emoji-tekenprobleemoplossing
Stap 1:Wijzig het MySQL-configuratiebestand my.cnf
- (Windows-server is my.ini,LinuxDe server is mijn.cnf)
- my.cnf-bestand, meestal in
/etc/mysql/my.cnfpositie. - CWP-configuratieschermHet my.cnf-bestand is in
/etc/my.cnfpositie.
Nadat je het hebt gevonden, voeg je de volgende inhoud toe in de volgende drie delen ▼
[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'
Stap 2:Start de MySQL-database opnieuw
service mysqld restart
Stap 3: Controleer de tekenset opnieuw en typ ▼ in de SQL-opdrachtregel
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_database';
Controleer of het volgende

Voer het volgende SQL-commando in▼
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
Controleer of het als volgt is▼
+--------------------------+--------------------+ | 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 | +--------------------------+--------------------+
Na het aanmaken van een nieuwe database in phpMyAdmin, moet u:Databasecode bekijken ▼
SHOW CREATE DATABASE db_name;
- 如:
SHOW CREATE DATABASE test;
Als de databasecodering niet isutf8mb4, moet u de databasetekenset wijzigen inutf8mb4 .
Hoe de database-tekenset wijzigen in utf8mb4?
Stap 1: Klik op de huidige databasenaam in phpMyAdmin en klik vervolgens op SQL.
Stap 2: Voer de volgende opdracht in om de databasetekenset te wijzigen in:utf8mb4▼
ALTER DATABASE db_name DEFAULT CHARACTER SET utf8mb4
- 如:
ALTER DATABASE test DEFAULT CHARACTER SET utf8mb4;
Stap 3:Start de MySQL-database opnieuw
service mysqld restart
- Dat is het.
Hier zijn enkele voorbeelden van SQL-opdrachten:
Wijzig de standaard tekenset en alle tekenkolommen van de tabel in de nieuwe tekenset ▼
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;
Als u alleen de standaardtekenset van de tabel wijzigt▼
ALTER TABLE tbl_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
- 如:
ALTER TABLE logtest DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
De tekenset van een veld wijzigen ▼
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;
Bekijk tafelcode ▼
SHOW CREATE TABLE tbl_name;
Veldcodes bekijken ▼
SHOW FULL COLUMNS FROM tbl_name;
Bekijk huidige databasecode ▼
SHOW VARIABLES LIKE 'character_set_%';
- Het mysql-connector-java-stuurprogrammapakket ondersteunt alleen utf5.1.13mb8 in 4+
Hoop Chen Weiliang Blog ( https://www.chenweiliang.com/ ) gedeeld "Hoe Emoji in MySQL op te slaan? Voer de database Emoji-uitdrukking vraagtekentekenprobleem in", wat nuttig voor u is.
Welkom om de link van dit artikel te delen:https://www.chenweiliang.com/cwl-26592.html
Om nog meer verborgen trucs🔑 te ontgrendelen, nodigen we je van harte uit om lid te worden van ons Telegram-kanaal!
Deel en like als je het leuk vindt! Jouw aandelen en likes zijn onze voortdurende motivatie!