Artikola Adresaro
Se la Emoji-esprimo estas konservita en utf8-kodigoMySQL-datumbazoaŭ MariaDB, ĝi ne povas esti montrata.
Kial la Emoji-esprimo enigita en la datumbazon fariĝas demandosigno?
Ĉar Emoji-esprimoj estas 4-bajtaj signoj, kaj la utf8-aro nur subtenas 1-3-bajtojn da signoj, Emoji-esprimoj ne povas esti skribitaj en la datumbazon.
Kiel solvi la problemon, ke la Emoji-esprimo enigita en la datumbazon fariĝas demandosigno?
Estas 2 solvoj:
- Enigu tekston permane, anstataŭigante kvar-bajtajn signojn per kutimaj signoj.
- modifi MySQL Datumbaza signaro, ŝanĝu la datumbazan signaron de utf8 al utf8mb4, subtenu 1-4 bajtajn signojn.
Fakte, la unua metodo estas tro da laboro kaj ne estas konsilinda.
Oni rekomendas uzi la duan solvon, modifi la datumbazan signaron de MySQL.
Komencante de MySQL 5.5.3-versio, la datumbazo povas subteni la utf4mb8 signaron de 4 bajtoj, kaj karaktero povas havi ĝis 4 bajtojn, do ĝi povas subteni pli da signoroj, kaj ankaŭ povas stoki Emoji-esprimojn.
- Post MySQL 5.5.3, vi povas esence perfekte ĝisdatigi al la utf8mb4 signaro.
- Samtempe, utf8mb4 estas kongrua kun la utf8 signaro.
- La kodigado, pozicio kaj konservado de utf8-signoj estas en utf8mb4.
- Same kiel utf8-karaktero, neniu damaĝo al ekzistantaj datumoj.
ProphpMyAdminPor lastatempe kreitaj tabeloj en lastatempe kreita datumbazo, la defaŭlta signokodigo estas:Latin1
- Ĉi tiu kodado ne povas enmeti ĉinajn kaj Emoji-esprimojn;
- Vi devas ŝanĝi la signaron-kodigon de la datumbaza signaro kaj tabelo al utf8mb4;
- Poste, rekomencu MySQL, vi povas enmeti ĉinajn kaj Emoji-esprimojn.
Solvo de problemo de MySQL Emoji-karaktero
paŝo 1:Modifi la MySQL-agordan dosieron my.cnf
- (Vindoza servilo estas my.ini,linuxLa servilo estas my.cnf)
- my.cnf dosiero, kutime en
/etc/mysql/my.cnf
pozicio. - CWP KontrolpaneloLa my.cnf dosiero, estas en
/etc/my.cnf
pozicio.
Post kiam vi trovas ĝin, bonvolu aldoni la sekvan enhavon en la sekvaj tri partoj ▼
[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'
paŝo 2:Rekomencu la MySQL-datumbazon
service mysqld restart
Paŝo 3: Kontrolu la signaron denove kaj enigu ▼ en la SQL-komandlinio
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_database';
Kontrolu ĉu la sekvaj ▼
Enigu la sekvan SQL-komandon▼
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
Kontrolu ĉu ĝi estas kiel sekvas▼
+--------------------------+--------------------+ | 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 | +--------------------------+--------------------+
Post kreado de nova datumbazo en phpMyAdmin, vi devasRigardu datumbazan kodon ▼
SHOW CREATE DATABASE db_name;
- Kiel:
SHOW CREATE DATABASE test;
Se la datumbaza kodado ne estasutf8mb4
, vi devas modifi la datumbazan signaron alutf8mb4
.
Kiel modifi la datumbazan signaron al utf8mb4?
Paŝo 1: Alklaku la nunan datumbazan nomon en phpMyAdmin, tiam alklaku SQL.
Paŝo 2: Enigu la sekvan komandon por modifi la datumbazan signaron alutf8mb4
▼
ALTER DATABASE db_name DEFAULT CHARACTER SET utf8mb4
- Kiel:
ALTER DATABASE test DEFAULT CHARACTER SET utf8mb4;
paŝo 3:Rekomencu la MySQL-datumbazon
service mysqld restart
- Jen ĝi.
Jen kelkaj ekzemploj de SQL-komandoj:
Ŝanĝu la defaŭltan signaron kaj ĉiujn signarkolumnojn de la tabelo al la nova signoaro ▼
ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
- Kiel:
ALTER TABLE logtest CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
Se vi nur modifas la defaŭltan signaron de la tabelo▼
ALTER TABLE tbl_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
- Kiel:
ALTER TABLE logtest DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
Modifi la signaron de kampo ▼
ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name
- Kiel:
ALTER TABLE logtest CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;
Vidu tabelkodon ▼
SHOW CREATE TABLE tbl_name;
Rigardu Kampajn Kodojn ▼
SHOW FULL COLUMNS FROM tbl_name;
Vidi nunan datumbazan kodon ▼
SHOW VARIABLES LIKE 'character_set_%';
- La mysql-connector-java-ŝoforpakaĵo nur subtenas utf5.1.13mb8 en 4+
Hope Chen Weiliang Blogo ( https://www.chenweiliang.com/ ) konigis "Kiel konservi Emoji en MySQL? Enigu la datumbazon Emoji-esprimo demandosigno signo problemo", kiu estas helpema al vi.
Bonvenon dividi la ligon de ĉi tiu artikolo:https://www.chenweiliang.com/cwl-26592.html
Bonvenon al la Telegram-kanalo de la blogo de Chen Weiliang por ricevi la plej novajn ĝisdatigojn!
📚 Ĉi tiu gvidilo enhavas grandegan valoron, 🌟Ĉi tio estas malofta ŝanco, ne maltrafu ĝin! ⏰⌛💨
Kunhavigu kaj ŝatu se vi ŝatas!
Via kundivido kaj ŝatoj estas nia kontinua instigo!