Artikel Directory
As Emoji-útdrukkingen wurde opslein yn utf8-kodearringMySQL databankof MariaDB, kin it net werjûn wurde.
Wêrom feroaret de Emoji-ekspresje yn 'e databank yn in fraachteken?
Om't Emoji-útdrukkingen 4-byte-tekens binne, en de utf8-tekenset allinich 1-3 byte-tekens stipet, kinne Emoji-útdrukkingen net nei de databank skreaun wurde.
Hoe kinne jo it probleem oplosse dat Emoji-útdrukkingen feroare yn fraachtekentekens doe't se yn 'e database ynfierd binne?
D'r binne 2 oplossingen:
- Fier tekst mei de hân yn, ferfanging fan fjouwer-byte karakters mei oanpaste karakters.
- feroarje MySQL Database-tekenset, feroarje de databank-tekenset fan utf8 nei utf8mb4, en stipet 1-4 byte-tekens.
Yn feite fereasket de earste metoade tefolle wurk en is net oan te rieden.
It is oan te rieden om de twadde oplossing te brûken om de MySQL-database-tekenset te feroarjen.
Begjin fan MySQL ferzje 5.5.3 kin de databank de 4-byte utf8mb4-tekenset stypje, en in karakter kin oant 4 bytes hawwe, sadat it mear karaktersets kin stypje en Emoji-útdrukkingen opslaan.
- Nei MySQL 5.5.3 kin it yn prinsipe naadloos wurde opwurdearre nei de utf8mb4-tekenset.
- Tagelyk is utf8mb4 kompatibel mei de utf8-tekenset.
- De kodearring, posysje en opslach fan utf8-tekens binne yn utf8mb4.
- Itselde karakter set as utf8 en sil gjin skea oan besteande gegevens.
Want ynphpMyAdminFoar nij oanmakke tabellen yn nij oanmakke databases is de standertkarakterkodearring:Latin1
- Dizze kodearring kin Sineeske en Emoji-útdrukkingen net ynfoegje;
- It is needsaaklik om te feroarjen de databank karakter set en tabel karakter set kodearring nei utf8mb4;
- Start dan MySQL op 'e nij en jo kinne Sineeske en Emoji-útdrukkingen ynfoegje.
MySQL Emoji karakter probleem oplossing
第 1 步:Feroarje de MySQL-konfiguraasjetriem my.cnf
- (my.ini foar Windows-tsjinners,linuxDe tsjinner is my.cnf)
- my.cnf triem, meastal yn
/etc/mysql/my.cnf
Lokaasje. - CWP Control PanelIt my.cnf-bestân is yn
/etc/my.cnf
Lokaasje.
Neidat jo it fûn hawwe, foegje asjebleaft de folgjende ynhâld ta yn 'e folgjende trije dielen ▼
[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 步:Start de MySQL-database opnij
service mysqld restart
Stap 3: Kontrolearje de tekenset wer en fier ▼ yn 'e SQL kommandorigel
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_database';
Kontrolearje oft it is as folget ▼
Fier it folgjende SQL-kommando yn▼
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
Kontrolearje oft it is as folget▼
+--------------------------+--------------------+ | 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 | +--------------------------+--------------------+
Nei it meitsjen fan in nije databank yn phpMyAdmin, moatte joBesjoch databankkodearring ▼
SHOW CREATE DATABASE db_name;
- Lykas:
SHOW CREATE DATABASE test;
As de databank kodearring is netutf8mb4
, moat de databanktekenset wizige wurde ynutf8mb4
.
Hoe kinne jo de databankkarakterset wizigje nei utf8mb4?
Stap 1: Klikje op de hjoeddeistige databasenamme yn phpMyAdmin, klik dan op SQL.
Stap 2: Fier it folgjende kommando yn om de databankkarakterset te feroarjenutf8mb4
▼
ALTER DATABASE db_name DEFAULT CHARACTER SET utf8mb4
- Lykas:
ALTER DATABASE test DEFAULT CHARACTER SET utf8mb4;
第 3 步:Start de MySQL-database opnij
service mysqld restart
- Dat is it.
Hjir binne wat foarbylden fan SQL-kommando's:
Feroarje de standerttekenset en alle karakterkolommen fan 'e tabel nei de nije tekenset ▼
ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
- Lykas:
ALTER TABLE logtest CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
As jo allinich de standerttekenset fan 'e tabel wizigje▼
ALTER TABLE tbl_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
- Lykas:
ALTER TABLE logtest DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
Feroarje de tekenset fan in fjild ▼
ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name
- Lykas:
ALTER TABLE logtest CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;
Besjoch tabelkoade ▼
SHOW CREATE TABLE tbl_name;
Besjoch fjildkodearring ▼
SHOW FULL COLUMNS FROM tbl_name;
Besjoch aktuele databankkodearring ▼
SHOW VARIABLES LIKE 'character_set_%';
- It mysql-connector-java-bestjoerderpakket stipet allinich utf5.1.13mb8 yn 4+
Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) dielde "Hoe kinne jo Emoji yn MySQL bewarje? Probleem mei it ynfieren fan Emoji-fraachtekentekens yn 'e databank", dy't jo nuttich wêze sil.
Wolkom om de keppeling fan dit artikel te dielen:https://www.chenweiliang.com/cwl-26592.html
Wolkom by it Telegram-kanaal fan Chen Weiliang's blog om de lêste updates te krijen!
📚 Dizze hantlieding befettet enoarme wearde, 🌟Dit is in seldsume kâns, mis it net! ⏰⌛💨
Diel en like as jo wolle!
Jo dielen en likes binne ús trochgeande motivaasje!