Rumah > Artikel > pangkalan data > Mengapa Emojis saya Hilang dalam MySQL?
Pengekodan Aksara MySQL dan Storan Emoji
Kami mempunyai aplikasi iPhone yang menghantar emotikon ke bahagian belakang PHP, yang kemudiannya memasukkannya ke dalam MySQL pangkalan data. Walau bagaimanapun, selepas pemasukan berjaya, nilai yang disimpan kelihatan kosong.
Sisipan teks sahaja berjaya, tetapi apabila emotikon disertakan, hanya teks yang akan disisipkan. Cadangan untuk menukar jenis medan kepada Blog (untuk menampung data imej) terbukti tidak sesuai kerana sesekali sisipan bukan emotikon dan keperluan storan yang kecil.
Penyelesaian: Keserasian Set Aksara MySQL
Isunya terletak pada pengekodan aksara MySQL. Emoji iOS terutamanya menggunakan mata kod yang melebihi Satah Berbilang Bahasa Asas (BMP) jadual Unikod. Contohnya, emoji "Wajah Tersenyum dengan Mulut Terbuka dan Mata Tersenyum" berada di U 1F604.
Versi MySQL sebelum 5.5 hanya menyokong UTF-8 untuk BMP, mengehadkan storan kepada aksara di bawah U FFFF. Akibatnya, MySQL tidak boleh menyimpan emoji U 1F604 atau "aksara tinggi" yang lain.
Untuk menyelesaikannya, gunakan MySQL 5.5 dan pilih utf8mb4 (UTF-8 asli), utf16 atau utf32 sebagai set aksara lajur. Selain itu, pastikan sambungan MySQL antara PHP dan pangkalan data menggunakan set aksara yang sama.
Untuk versi MySQL kurang daripada 5.5, gunakan jenis lajur BLOB, yang menyimpan bait mentah tanpa mengambil kira "aksara." Walaupun ini membenarkan storan emoji, ia menjejaskan kecekapan pencarian teks dan pengindeksan.
Atas ialah kandungan terperinci Mengapa Emojis saya Hilang dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!