pelrêça gotarê
Ger îfadeya Emoji di şîfrekirina utf8 de were hilanînDatabasa MySQLan MariaDB, ew nikare were xuyang kirin.
Çima îfadeya Emoji ya ku ketiye databasê dibe karakterek nîşana pirsê?
Ji ber ku biwêjên Emoji tîpên 4-byte ne, û koma karaktera utf8 tenê 1-3 byte karakteran piştgirî dike, îfadeyên Emoji di databasê de nayên nivîsandin.
Meriv çawa pirsgirêka ku îfadeya Emoji ketiye databasê dibe karakterek nîşana pirsê çareser bike?
2 çareserî hene:
- Nivîsar bi destan têkevin, li şûna tîpên çar-byte bi tîpên xwerû.
- gûhertin MySQL Komek karaktera databasê, komek karaktera databasê ji utf8 berbi utf8mb4 biguhezînin, karakterên 1-4 bayt piştgirî bikin.
Bi rastî, rêbaza yekem pir kedkar e û ne şîret e.
Tête pêşniyar kirin ku çareseriya duyemîn bikar bînin, komek karaktera databasa MySQL biguherînin.
Ji guhertoya MySQL 5.5.3 dest pê dike, databas dikare komek karaktera utf4mb8 ya 4 byte piştgirî bike, û karekterek dikare heya 4 byte hebe, ji ber vê yekê ew dikare bêtir komên karakteran piştgirî bike, û her weha dikare bêjeyên Emoji hilîne.
- Piştî MySQL 5.5.3, hûn di bingeh de dikarin bêkêmasî li koma karaktera utf8mb4 nûve bikin.
- Di heman demê de, utf8mb4 bi koma karaktera utf8 re hevaheng e.
- Şîfrekirin, cih û hilanîna tîpên utf8 di utf8mb4 de ne.
- Heman koma karaktera utf8, zirarê nade daneyên heyî.
Bi hecetaphpMyAdminJi bo tabloyên ku nû hatine afirandin di danegehek nû hatî afirandin de, kodkirina karaktera xwerû ev e:Latin1
- Ev şîfrekirin nikare bêjeyên Çînî û Emoji têxe nav;
- Pêdivî ye ku hûn şîfrekirina koma karakterê ya koma karakter û tabloya databasê biguherînin utf8mb4;
- Dûv re, MySQL ji nû ve bidin destpêkirin, hûn dikarin bêjeyên Çînî û Emoji têxin nav xwe.
Çareseriya pirsgirêka karaktera MySQL Emoji
Gav 1:Pelê mîhengê MySQL my.cnf biguherîne
- (Pêşkêşkara Windows my.ini ye,LinuxPêşkêşkar my.cnf e)
- pelê my.cnf, bi gelemperî tê de
/etc/mysql/my.cnfCîh. - Panela Kontrolê ya CWPPelê my.cnf, tê de ye
/etc/my.cnfCîh.
Piştî ku hûn wê bibînin, ji kerema xwe naveroka jêrîn li sê beşên jêrîn zêde bikin ▼
[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'
Gav 2:Databasa MySQL ji nû ve bidin destpêkirin
service mysqld restart
Gav 3: Koma karakterê dîsa kontrol bikin û di rêza fermana SQL de ▼ binivîsin
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_database';
Kontrol bikin ka jêrîn ▼

Fermana SQL ya jêrîn binivîsin▼
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
Kontrol bikin ka ew wekî jêrîn e▼
+--------------------------+--------------------+ | 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 | +--------------------------+--------------------+
Piştî afirandina databasek nû di phpMyAdmin de, divê hûnKoda databasê bibînin ▼
SHOW CREATE DATABASE db_name;
- Wekî:
SHOW CREATE DATABASE test;
Ger şîfrekirina databasê nebeutf8mb4, divê hûn karektera databasê biguherîninutf8mb4 .
Meriv çawa karaktera databasê li utf8mb4 biguhezîne?
Gav 1: Navê databasa heyî li phpMyAdmin bikirtînin, dûv re SQL bikirtînin.
Gav 2: Fermana jêrîn têkevin da ku karektera databasê biguhezîninutf8mb4▼
ALTER DATABASE db_name DEFAULT CHARACTER SET utf8mb4
- Wekî:
ALTER DATABASE test DEFAULT CHARACTER SET utf8mb4;
Gav 3:Databasa MySQL ji nû ve bidin destpêkirin
service mysqld restart
- Her eve.
Li vir çend mînakên fermanên SQL hene:
Koma karaktera xwerû û hemî stûnên karakterên tabloyê biguhezînin koma karaktera nû ▼
ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
- Wekî:
ALTER TABLE logtest CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
Ger hûn tenê rêzika karaktera xwerû ya tabloyê biguherînin ▼
ALTER TABLE tbl_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
- Wekî:
ALTER TABLE logtest DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
Komek karakterên qada ▼ biguherînin
ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name
- Wekî:
ALTER TABLE logtest CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;
Koda tabloyê bibînin ▼
SHOW CREATE TABLE tbl_name;
Kodên Qadan bibînin ▼
SHOW FULL COLUMNS FROM tbl_name;
Koda databasa heyî ▼ bibînin
SHOW VARIABLES LIKE 'character_set_%';
- Pakêta ajokerê mysql-connector-java tenê di 5.1.13+ de utf8mb4 piştgirî dike
Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) parve kir "Emoji çawa di MySQL-ê de hilanîn? Têkeve Pirsgirêka karaktera nîşana pirsê ya îfadeya Emoji ya databasê", ku ji we re arîkar e.
Bi xêr hatî bo parvekirina girêdana vê gotarê:https://www.chenweiliang.com/cwl-26592.html
Ji bo vekirina bêtir hîleyên veşartî🔑, bi xêr hatin beşdarî kanala me ya Telegramê bibin!
Heke hûn jê hez dikin parve bikin û hez bikin! Parvekirin û ecibandinên we motîvasyona me ya berdewam in!