Anyè Atik
Si ekspresyon emoji a estoke nan kodaj utf8baz done MySQLoswa MariaDB, li pa ka parèt.
Poukisa ekspresyon Emoji ki antre nan baz done a vin yon karaktè mak kesyon?
Paske ekspresyon Emoji yo se karaktè 4-byte, ak seri karaktè utf8 la sèlman sipòte 1-3 byte nan karaktè, ekspresyon Emoji pa ka ekri nan baz done a.
Ki jan yo rezoud pwoblèm nan ke ekspresyon an Emoji antre nan baz done a vin tounen yon karaktè mak kesyon?
Gen 2 solisyon:
- Antre tèks manyèlman, ranplase karaktè kat byte ak karaktè koutim.
- modifye Miskl Ansanm karaktè baz done, chanje seri karaktè baz done a soti nan utf8 a utf8mb4, sipòte karaktè 1-4 byte.
An reyalite, premye metòd la se twòp travay epi li pa rekòmande.
Li rekòmande pou itilize dezyèm solisyon an, modifye seri karaktè baz done MySQL.
Kòmanse soti nan MySQL 5.5.3 vèsyon, baz done a ka sipòte seri karaktè utf4mb8 nan 4 bytes, ak yon karaktè ka gen jiska 4 bytes, kidonk li ka sipòte plis seri karaktè, epi tou li ka estoke ekspresyon Emoji.
- Apre MySQL 5.5.3, ou ka fondamantalman san pwoblèm ajou ak seri karaktè utf8mb4 la.
- An menm tan an, utf8mb4 konpatib ak seri karaktè utf8 la.
- Kodaj, pozisyon ak depo karaktè utf8 yo nan utf8mb4.
- Menm jan ak seri karaktè utf8, pa gen okenn domaj nan done ki egziste deja.
AkozfpmyadmenPou tab ki fèk kreye nan yon baz done ki fèk kreye, kodaj karaktè default la se:Latin1
- Kodaj sa a pa ka mete ekspresyon Chinwa ak Emoji;
- Ou bezwen chanje kodaj seri karaktè nan seri karaktè baz done a ak tab nan utf8mb4;
- Lè sa a, rekòmanse MySQL, ou ka mete ekspresyon Chinwa ak Emoji.
MySQL Emoji karaktè solisyon pwoblèm
Etap 1:Modifye fichye konfigirasyon MySQL my.cnf
- (Sèvè Windows se my.ini,LinuxSèvè a se my.cnf)
- fichye my.cnf, anjeneral nan
/etc/mysql/my.cnf
pozisyon. - CWP Kontwòl PanelFichye my.cnf a, se nan
/etc/my.cnf
pozisyon.
Apre w fin jwenn li, tanpri ajoute kontni sa a nan twa pati sa yo ▼
[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'
Etap 2:Rekòmanse baz done MySQL la
service mysqld restart
Etap 3: Tcheke seri karaktè a ankò epi antre ▼ nan liy lòd SQL la
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_database';
Tcheke si sa ki annapre yo ▼
Antre kòmandman SQL sa a▼
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
Tcheke si li se jan sa a ▼
+--------------------------+--------------------+ | 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 | +--------------------------+--------------------+
Apre ou fin kreye yon nouvo baz done nan phpMyAdmin, ou dweGade kòd baz done ▼
SHOW CREATE DATABASE db_name;
- 如:
SHOW CREATE DATABASE test;
Si kodaj baz done a se pautf8mb4
, ou dwe modifye karaktè baz done autf8mb4
.
Ki jan yo modifye seri karaktè baz done a nan utf8mb4?
Etap 1: Klike sou non baz done aktyèl la nan phpMyAdmin, Lè sa a, klike sou SQL.
Etap 2: Antre kòmandman sa a pou modifye karaktè baz done autf8mb4
▼
ALTER DATABASE db_name DEFAULT CHARACTER SET utf8mb4
- 如:
ALTER DATABASE test DEFAULT CHARACTER SET utf8mb4;
Etap 3:Rekòmanse baz done MySQL la
service mysqld restart
- Se sa.
Men kèk egzanp kòmandman SQL:
Chanje seri karaktè defo a ak tout kolòn karaktè nan tablo a nan seri karaktè a nouvo ▼
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;
Si ou sèlman modifye seri karaktè default tab la▼
ALTER TABLE tbl_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
- 如:
ALTER TABLE logtest DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
Modifye seri karaktè yon jaden ▼
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;
Gade kòd tab ▼
SHOW CREATE TABLE tbl_name;
Gade kòd jaden ▼
SHOW FULL COLUMNS FROM tbl_name;
Gade kòd baz done aktyèl ▼
SHOW VARIABLES LIKE 'character_set_%';
- Pake chofè mysql-connector-java sèlman sipòte utf5.1.13mb8 nan 4+
Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) pataje "Kijan pou konsève pou Emoji nan MySQL? Antre nan baz done Emoji ekspresyon kesyon mak karaktè pwoblèm", ki se itil pou ou.
Byenvini pataje lyen atik sa a:https://www.chenweiliang.com/cwl-26592.html
Byenveni nan chanèl Telegram blog Chen Weiliang a pou jwenn dènye mizajou yo!
📚 Gid sa a gen anpil valè, 🌟Sa a se yon opòtinite ki ra, pa rate li! ⏰⌛💨
Pataje epi like siw renmen!
Pataje w ak renmen ou se motivasyon kontinyèl nou!