Artikulu direktorioa
Emoji adierazpena utf8 kodetzean gordetzen badaMySQL datu-baseaedo MariaDB, ezin da bistaratu.
Zergatik bihurtzen da datu-basean sartutako Emoji adierazpena galdera-ikur karaktere?
Emoji adierazpenak 4 byteko karaktereak direnez eta utf8 karaktere multzoak karaktere 1-3 byte baino ez dituelako onartzen, Emoji adierazpenak ezin dira datu-basean idatzi.
Nola konpondu datu-basean sartutako Emoji adierazpena galdera-ikur karaktere bihurtzen den arazoa?
2 irtenbide daude:
- Idatzi testua eskuz, lau byteko karaktereak karaktere pertsonalizatuekin ordezkatuz.
- Berrikusi MySQL Datu-baseko karaktere-multzoa, aldatu datu-baseko karaktere-multzoa utf8-tik utf8mb4-ra, 1-4 byte-ko karaktereak onartzen ditu.
Izan ere, lehen metodoa lan gehiegi da eta ez da komeni.
Bigarren irtenbidea erabiltzea gomendatzen da, MySQL datu-baseko karaktere multzoa aldatzea.
MySQL 5.5.3 bertsiotik hasita, datu-baseak 4 byteko utf8mb4 karaktere-multzoa onar dezake, eta karaktere batek 4 byte izan ditzake, beraz, karaktere-multzo gehiago onar ditzake eta Emoji adierazpenak ere gorde ditzake.
- MySQL 5.5.3-ren ondoren, funtsean, utf8mb4 karaktere-jokora berritu dezakezu.
- Aldi berean, utf8mb4 utf8 karaktere multzoarekin bateragarria da.
- Utf8 karaktereen kodeketa, kokapena eta biltegiratzea utf8mb4-n daude.
- Utf8 karaktere multzoaren berdina, lehendik dauden datuei kalterik ez.
OndoriozphpMyAdminSortu berri diren datu-base batean sortu berri diren tauletarako, karaktereen kodetze lehenetsia hau da:Latin1
- Kodetze honek ezin ditu txinera eta emoji esamoldeak txertatu;
- Datu-baseko karaktere-multzoaren eta taularen karaktere-multzoaren kodeketa utf8mb4-ra aldatu behar duzu;
- Ondoren, berrabiarazi MySQL, txinera eta Emoji esamoldeak txerta ditzakezu.
MySQL Emoji karaktereen arazoaren konponbidea
步 1:Aldatu MySQL konfigurazio fitxategia my.cnf
- (Windows zerbitzaria my.ini da,LinuxZerbitzaria my.cnf da)
- my.cnf fitxategia, normalean
/etc/mysql/my.cnf
posizioa. - CWP Kontrol Panelamy.cnf fitxategia barruan dago
/etc/my.cnf
posizioa.
Aurkitu ondoren, gehitu eduki hau hurrengo hiru zatietan ▼
[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:Berrabiarazi MySQL datu-basea
service mysqld restart
3. urratsa: egiaztatu karaktere multzoa berriro eta idatzi ▼ SQL komando-lerroan
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_database';
Egiaztatu hurrengo ▼
Sartu hurrengo SQL komandoa▼
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
Egiaztatu hurrengoa den▼
+--------------------------+--------------------+ | 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 | +--------------------------+--------------------+
phpMyAdmin-en datu-base berri bat sortu ondoren, behar duzuIkusi datu-basearen kodea ▼
SHOW CREATE DATABASE db_name;
- 如:
SHOW CREATE DATABASE test;
Datu-basearen kodeketa ez badautf8mb4
, datu-baseko karaktere multzoa aldatu behar duzuutf8mb4
.
Nola aldatu datu-baseko karaktere multzoa utf8mb4-ra?
1. urratsa: Egin klik uneko datu-basearen izena phpMyAdmin-en, eta egin klik SQL.
2. urratsa: Sartu komando hau datu-baseko karaktere multzoa aldatzekoutf8mb4
▼
ALTER DATABASE db_name DEFAULT CHARACTER SET utf8mb4
- 如:
ALTER DATABASE test DEFAULT CHARACTER SET utf8mb4;
步 3:Berrabiarazi MySQL datu-basea
service mysqld restart
- Hori da.
Hona hemen SQL komandoen adibide batzuk:
Aldatu karaktere-multzo lehenetsia eta taulako karaktere-zutabe guztiak karaktere-multzo berrira ▼
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;
Taularen karaktere multzo lehenetsia soilik aldatzen baduzu▼
ALTER TABLE tbl_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
- 如:
ALTER TABLE logtest DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
Aldatu eremu baten karaktere multzoa ▼
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;
Ikusi taularen kodea ▼
SHOW CREATE TABLE tbl_name;
Ikusi eremu-kodeak ▼
SHOW FULL COLUMNS FROM tbl_name;
Ikusi uneko datu-basearen kodea ▼
SHOW VARIABLES LIKE 'character_set_%';
- mysql-connector-java kontrolatzaile paketeak utf5.1.13mb8 bakarrik onartzen du 4+ bertsioan
Hope Chen Weiliang bloga ( https://www.chenweiliang.com/ ) partekatu du "Nola gorde Emoji MySQL-en? Sartu datu-basean Emoji adierazpenaren galdera-markaren arazoa", eta hori lagungarria zaizu.
Ongi etorri artikulu honen esteka partekatzera:https://www.chenweiliang.com/cwl-26592.html
Ongi etorri Chen Weiliang-en blogeko Telegram kanalera azken eguneraketak jasotzeko!
📚 Gida honek balio handia du, 🌟Aukera arraroa da hau, ez galdu! ⏰⌛💨
Partekatu eta gustatzen bazaizu!
Zure partekatzea eta gustukoak dira gure etengabeko motibazioa!