pelrêça gotarê
Eger emojî di databasa MySQL an databasa MariaDB de bi kodkirina UTF-8 werin hilanîn, ew ê neyên nîşandan.
Ç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'
Pêngava 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î çêkirina databeseke nû di phpMyAdmin de, divê hûn kodkirina databesê kontrol bikin. ▼
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;
Pêngava 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
Hêvîdarim ku gotara "Meriv çawa Emojîyan di MySQL de hilîne? Pirsgirêkên têketina tîpên pirsiyariyê yên Emojîyan di nav databasa de" ku li ser bloga Chen Weiliang ( https://www.chenweiliang.com/ ) hatiye parvekirin, ji we re bibe alîkar.
Ji kerema xwe vê girêdana gotarê parve bikin: https://www.chenweiliang.com/cwl-26592.html
