Artikulo Direktoryo
- 1 Bakit ang ekspresyong Emoji na ipinasok sa database ay nagiging tandang pananong na character?
- 2 Paano malutas ang problema na ang expression ng Emoji na ipinasok sa database ay nagiging isang tandang pananong na character?
- 3 Solusyon sa problema sa karakter ng MySQL Emoji
- 4 Paano baguhin ang database character set sa utf8mb4?
Kung ang Emoji expression ay naka-imbak sa utf8 encodingMySQL databaseo MariaDB, hindi ito maipapakita.
Bakit ang ekspresyong Emoji na ipinasok sa database ay nagiging tandang pananong na character?
Dahil ang mga expression ng Emoji ay 4-byte na character, at ang utf8 character set ay sumusuporta lamang sa 1-3 byte ng mga character, hindi maisusulat ang mga Emoji expression sa database.
Paano malutas ang problema na ang expression ng Emoji na ipinasok sa database ay nagiging isang tandang pananong na character?
Mayroong 2 solusyon:
- Manu-manong magpasok ng text, na pinapalitan ang apat na byte na character ng mga custom na character.
- baguhin MySQL Database character set, baguhin ang database character set mula utf8 hanggang utf8mb4, suportahan ang 1-4 byte na character.
Sa katunayan, ang unang paraan ay masyadong maraming trabaho at hindi ipinapayong.
Inirerekomenda na gamitin ang pangalawang solusyon, baguhin ang MySQL database character set.
Simula sa bersyon ng MySQL 5.5.3, masusuportahan ng database ang utf4mb8 character set na 4 byte, at ang isang character ay maaaring magkaroon ng hanggang 4 na byte, upang masuportahan nito ang mas maraming character set, at makakapag-imbak din ng mga expression ng Emoji.
- Pagkatapos ng MySQL 5.5.3, maaari kang mag-upgrade nang walang putol sa utf8mb4 character set.
- Kasabay nito, ang utf8mb4 ay tugma sa utf8 character set.
- Ang pag-encode, posisyon at storage ng mga utf8 na character ay nasa utf8mb4.
- Pareho sa utf8 character set, walang pinsala sa umiiral na data.
Dahil saphpMyAdminPara sa mga bagong likhang talahanayan sa isang bagong likhang database, ang default na pag-encode ng character ay:Latin1
- Ang pag-encode na ito ay hindi maaaring magpasok ng Chinese at Emoji expression;
- Kailangan mong baguhin ang character set encoding ng database character set at table sa utf8mb4;
- Pagkatapos, i-restart ang MySQL, maaari mong ipasok ang mga expression ng Chinese at Emoji.
Solusyon sa problema sa karakter ng MySQL Emoji
第 1 步 :Baguhin ang MySQL configuration file my.cnf
- (Ang Windows server ay my.ini,LinuxAng server ay my.cnf)
- my.cnf file, kadalasang nasa
/etc/mysql/my.cnfposisyon - CWP Control PanelAng my.cnf file, ay nasa
/etc/my.cnfposisyon
Pagkatapos mong mahanap ito, mangyaring idagdag ang sumusunod na nilalaman sa sumusunod na tatlong bahagi ▼
[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 步 :I-restart ang MySQL database
service mysqld restart
Hakbang 3: Suriin muli ang set ng character at ilagay ang ▼ sa SQL command line
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_database';
Suriin kung ang sumusunod na ▼

Ipasok ang sumusunod na SQL command▼
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
Suriin kung ito ay ang mga sumusunod▼
+--------------------------+--------------------+ | 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 | +--------------------------+--------------------+
Pagkatapos gumawa ng bagong database sa phpMyAdmin, kailangan moTingnan ang database code ▼
SHOW CREATE DATABASE db_name;
- 如:
SHOW CREATE DATABASE test;
Kung ang database encoding ay hindiutf8mb4, dapat mong baguhin ang database character set sautf8mb4 .
Paano baguhin ang database character set sa utf8mb4?
Hakbang 1: I-click ang kasalukuyang pangalan ng database sa phpMyAdmin, pagkatapos ay i-click ang SQL.
Hakbang 2: Ilagay ang sumusunod na command para baguhin ang database character set sautf8mb4▼
ALTER DATABASE db_name DEFAULT CHARACTER SET utf8mb4
- 如:
ALTER DATABASE test DEFAULT CHARACTER SET utf8mb4;
第 3 步 :I-restart ang MySQL database
service mysqld restart
- Ayan yun.
Narito ang ilang halimbawa ng mga SQL command:
Baguhin ang default na set ng character at lahat ng column ng character ng talahanayan sa bagong set ng character ▼
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;
Kung babaguhin mo lang ang default na set ng character ng talahanayan▼
ALTER TABLE tbl_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
- 如:
ALTER TABLE logtest DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
Baguhin ang set ng character ng isang field ▼
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;
Tingnan ang table code ▼
SHOW CREATE TABLE tbl_name;
Tingnan ang Mga Field Code ▼
SHOW FULL COLUMNS FROM tbl_name;
Tingnan ang kasalukuyang database code ▼
SHOW VARIABLES LIKE 'character_set_%';
- Ang mysql-connector-java driver package ay sumusuporta lamang sa utf5.1.13mb8 sa 4+
Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) ibinahagi ang "Paano i-save ang Emoji sa MySQL? Ipasok ang database Emoji expression question mark na problema sa karakter", na nakakatulong sa iyo.
Maligayang pagdating upang ibahagi ang link ng artikulong ito:https://www.chenweiliang.com/cwl-26592.html
Upang i-unlock ang higit pang mga nakatagong trick🔑, maligayang pagdating sa aming Telegram channel!
Share and like kung nagustuhan mo! Ang iyong mga pagbabahagi at pag-like ay ang aming patuloy na pagganyak!