Isalathiso senqaku
Ukuba intetho ye-Emoji igcinwe kwi encoding utf8MySQL databaseokanye iMariaDB, ayinakuboniswa.
Kutheni intetho ye-Emoji ifakwe kwisiseko sedatha ibe ngumlingisi wombuzo?
Ngenxa yokuba iintetho ze-Emoji zinamagama e-4-byte, kunye neseti ye-utf8 ixhasa kuphela i-1-3 bytes yabalinganiswa, iintetho ze-Emoji azinakubhalwa kuvimba wedatha.
Indlela yokusombulula ingxaki ukuba intetho ye-Emoji ifakwe kwisiseko sedatha iba ngumlinganiswa wombuzo?
Kukho izisombululo ezi-2:
- Faka umbhalo ngesandla, ususa amagama ebhayithi ezine ngoonobumba besiqhelo.
- guqula kancinane MySQL Iseti yoonobumba beDatabase, tshintsha isethi yoonobumba bedatha ukusuka kwi-utf8 ukuya kwi-utf8mb4, xhasa i-1-4 byte characters.
Enyanisweni, indlela yokuqala inomsebenzi omninzi kwaye ayifanelekanga.
Kuyacetyiswa ukuba usebenzise isisombululo sesibini, guqula kancinane isethi ye-database ye-MySQL.
Ukuqala kwinguqulo ye-MySQL 5.5.3, i-database inokuxhasa isethi ye-utf4mb8 yeebhayithi ezi-4, kwaye umlingiswa unokuba nee-bytes ezi-4, ngoko unokuxhasa iiseti ezininzi zomlinganiswa, kwaye unokugcina amagama e-Emoji.
- Emva kwe-MySQL 5.5.3, ungaphucula ngaphandle komthungo kwiseti yeempawu ze-utf8mb4.
- Kwangaxeshanye, i-utf8mb4 iyahambelana nesethi yeempawu ze-utf8.
- Ukufakwa kwekhowudi, indawo kunye nokugcinwa kweempawu ze-utf8 zikwi-utf8mb4.
- Kuyafana neseti yeempawu ze-utf8, akukho monakalo kwidatha ekhoyo.
Ngenxa yephpMyAdminKwiitheyibhile ezenziwe ngokutsha kwisiseko sedatha esenziwe ngokutsha, usebenziso lwekhowudi loonobumba olungagqibekanga lu:Latin1
- Olu guqulelo lwekhowudi alukwazi ukufaka amabinzana aseTshayina kunye ne-Emoji;
- Kufuneka utshintshe isethi yombhalo wekhowudi yogcino magama kunye netafile kwi-utf8mb4;
- Emva koko, qalisa kwakhona i-MySQL, ungafaka iintetho zesiTshayina kunye ne-Emoji.
MySQL Emoji isisombululo ingxaki umlinganiswa
Isiqendu 1:Guqula ifayile yoqwalaselo yeMySQL yam.cnf
- (Iseva yeWindows yeyam.ini,LinuxUmncedisi ngu my.cnf)
- my.cnf ifayile, iqhele ukungena
/etc/mysql/my.cnf
isikhundla. - Iphaneli yokulawula yeCWPIfayile ye-my.cnf, ingaphakathi
/etc/my.cnf
isikhundla.
Emva kokuba uyifumene, nceda wongeze umxholo olandelayo kula macandelo mathathu alandelayo ▼
[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'
Isiqendu 2:Qala kwakhona i-database ye-MySQL
service mysqld restart
Inyathelo 3: Jonga umlinganiswa useti kwakhona kwaye ufake ▼ kumgca womyalelo weSQL
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_database';
Jonga ukuba oku kulandelayo ▼
Ngenisa lo myalelo ulandelayo weSQL▼
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
Jonga ukuba ilandelayo▼
+--------------------------+--------------------+ | 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 | +--------------------------+--------------------+
Emva kokudala isiseko sedatha entsha kwiphpMyAdmin, kufunekaJonga ikhowudi yedatha ▼
SHOW CREATE DATABASE db_name;
- Njenge:
SHOW CREATE DATABASE test;
Ukuba i-encoding yedathabheyisi ayikhoutf8mb4
, kufuneka ulungise umbhalo wesiseko sedata emiselweyoutf8mb4
,
Uyilungisa njani idatabase esetwe kwi-utf8mb4?
Inyathelo 1: Cofa igama ledatha yangoku kwiphpMyAdmin, emva koko ucofe iSQL.
Inyathelo lesi-2: Faka lo myalelo ulandelayo ukulungisa unobumba wesiseko sedata emiselwe kuwoutf8mb4
▼
ALTER DATABASE db_name DEFAULT CHARACTER SET utf8mb4
- Njenge:
ALTER DATABASE test DEFAULT CHARACTER SET utf8mb4;
Isiqendu 3:Qala kwakhona i-database ye-MySQL
service mysqld restart
- Yiyo leyo.
Nantsi eminye imizekelo yemiyalelo yeSQL:
Guqula isethi yoonobumba abangagqibekanga kunye nazo zonke iikholamu zabalinganiswa betafile zibeseti entsha yoonobumba ▼
ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
- Njenge:
ALTER TABLE logtest CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
Ukuba uguqula kancinane uluhlu lweempawu ezimiselweyo zetafile▼
ALTER TABLE tbl_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
- Njenge:
ALTER TABLE logtest DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
Guqula umsebenzi webala ▼
ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name
- Njenge:
ALTER TABLE logtest CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;
Jonga ikhowudi yetafile ▼
SHOW CREATE TABLE tbl_name;
Jonga iiKhowudi zeNdawo ▼
SHOW FULL COLUMNS FROM tbl_name;
Jonga ikhowudi yedatha yangoku ▼
SHOW VARIABLES LIKE 'character_set_%';
- Iphakheji yomqhubi we-mysql-connector-java ixhasa kuphela utf5.1.13mb8 kwi-4+
Ndiyathemba Chen Weiliang Blog ( https://www.chenweiliang.com/ ) ekwabelwanayo "Uyigcina njani i-Emoji kwi-MySQL? Faka i-database ye-Emoji intetho yombuzo wengxaki yomlinganiswa", eluncedo kuwe.
Wamkelekile ukwabelana ngekhonkco leli nqaku:https://www.chenweiliang.com/cwl-26592.html
Wamkelekile kwisitishi seTelegram sebhlog kaChen Weiliang ukufumana uhlaziyo lwamva nje!
📚 Esi sikhokelo sinexabiso elikhulu, 🌟Eli lithuba elinqabileyo, ungaliphoswa! ⏰⌛💨
Yabelana kwaye uthanda ukuba uyathanda!
Ukwabelana kwakho kunye nezinto ozithandayo ziyinkuthazo yethu eqhubekayo!