Direktori Artikel
Jika emoji disimpan dalam basis data MySQL atau basis data MariaDB dengan pengkodean UTF-8 , emoji tersebut tidak akan ditampilkan.
Mengapa ekspresi Emoji yang dimasukkan ke dalam database menjadi karakter tanda tanya?
Karena ekspresi Emoji adalah karakter 4 byte, dan kumpulan karakter utf8 hanya mendukung 1-3 byte karakter, ekspresi Emoji tidak dapat ditulis ke dalam database.
Bagaimana mengatasi masalah ekspresi Emoji yang dimasukkan ke dalam database menjadi karakter tanda tanya?
Ada 2 solusi:
- Masukkan teks secara manual, ganti karakter empat byte dengan karakter khusus.
- memodifikasi MySQL Kumpulan karakter basis data, ubah kumpulan karakter basis data dari utf8 ke utf8mb4, dukung karakter 1-4 byte.
Padahal, cara pertama terlalu banyak bekerja dan tidak disarankan.
Disarankan untuk menggunakan solusi kedua, memodifikasi set karakter database MySQL.
Sejak versi MySQL 5.5.3, database dapat mendukung set karakter utf4mb8 4 byte, dan karakter dapat memiliki hingga 4 byte, sehingga dapat mendukung lebih banyak set karakter, dan juga dapat menyimpan ekspresi Emoji.
- Setelah MySQL 5.5.3, pada dasarnya Anda dapat meningkatkan dengan mulus ke set karakter utf8mb4.
- Pada saat yang sama, utf8mb4 kompatibel dengan set karakter utf8.
- Pengkodean, posisi, dan penyimpanan karakter utf8 ada di utf8mb4.
- Sama seperti set karakter utf8, tidak ada kerusakan pada data yang ada.
Disebabkan olehphpMyAdminUntuk tabel yang baru dibuat dalam database yang baru dibuat, pengkodean karakter default adalah:Latin1
- Encoding ini tidak dapat menyisipkan ekspresi China dan Emoji;
- Anda perlu mengubah pengkodean set karakter dari set karakter dan tabel database menjadi utf8mb4;
- Kemudian, restart MySQL, Anda dapat memasukkan ekspresi Cina dan Emoji.
Solusi masalah karakter MySQL Emoji
Langkah 1: Ubah file konfigurasi MySQL my.cnf
- (Server Windows adalah my.ini,LinuxServernya adalah my.cnf)
- file my.cnf, biasanya dalam
/etc/mysql/my.cnfposisi. - Panel Kontrol CWPFile my.cnf, ada di
/etc/my.cnfposisi.
Setelah Anda menemukannya, silakan tambahkan konten berikut di tiga bagian berikut
[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'
Langkah 2: Mulai ulang basis data MySQL
service mysqld restart
Langkah 3: Periksa set karakter lagi dan masukkan di baris perintah SQL
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_database';
Periksa apakah berikut

Masukkan perintah SQL berikut▼
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
Periksa apakah itu sebagai berikut▼
+--------------------------+--------------------+ | 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 | +--------------------------+--------------------+
Setelah membuat basis data baru di phpMyAdmin, Anda harus memeriksa pengkodean basis data. ▼
SHOW CREATE DATABASE db_name;
- 如:
SHOW CREATE DATABASE test;
Jika pengkodean basis data tidakutf8mb4, Anda harus mengubah set karakter database menjadiutf8mb4 .
Bagaimana cara mengubah karakter basis data yang disetel ke utf8mb4?
Langkah 1: Klik nama database saat ini di phpMyAdmin, lalu klik SQL.
Langkah 2: Masukkan perintah berikut untuk mengubah set karakter database menjadiutf8mb4▼
ALTER DATABASE db_name DEFAULT CHARACTER SET utf8mb4
- 如:
ALTER DATABASE test DEFAULT CHARACTER SET utf8mb4;
Langkah 3: Mulai ulang basis data MySQL
service mysqld restart
- Itu dia.
Berikut adalah beberapa contoh perintah SQL:
Ubah set karakter default dan semua kolom karakter tabel ke set karakter baru
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;
Jika Anda hanya mengubah set karakter default tabel▼
ALTER TABLE tbl_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
- 如:
ALTER TABLE logtest DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
Ubah set karakter bidang
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;
Lihat kode tabel
SHOW CREATE TABLE tbl_name;
Lihat Kode Bidang
SHOW FULL COLUMNS FROM tbl_name;
Lihat kode database saat ini
SHOW VARIABLES LIKE 'character_set_%';
- Paket driver mysql-connector-java hanya mendukung utf5.1.13mb8 di 4+
Semoga artikel "Cara menyimpan Emoji di MySQL? Masalah memasukkan karakter tanda tanya Emoji ke dalam basis data" yang dibagikan di blog Chen Weiliang ( https://www.chenweiliang.com/ ) bermanfaat bagi Anda.
Silakan bagikan tautan artikel ini: https://www.chenweiliang.com/cwl-26592.html
