Bagaimana cara menyimpan Emoji ke MySQL? Masuk ke database Masalah karakter tanda tanya ekspresi Emoji

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:

  1. Masukkan teks secara manual, ganti karakter empat byte dengan karakter khusus.
  2. 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

Bagaimana cara menyimpan Emoji ke MySQL? Masuk ke database Masalah karakter tanda tanya ekspresi Emoji

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+

发表 评论

您的邮箱地址不会被公开。必填项已用*标注

Gulir ke Atas