MySQL dan PHP: Aksara Cyrillic dengan Pengekodan UTF-8
Apabila cuba menyimpan teks Cyrillic dalam pangkalan data MySQL, adalah penting untuk memastikan pengekodan aksara yang betul untuk mengelakkan data rasuah. Isu yang anda hadapi berkemungkinan berkaitan dengan ketidakpadanan pengekodan aksara antara PHP dan MySQL.
Untuk menyelesaikan isu ini, anda mesti mengesahkan bahawa setiap aspek skrip PHP dan konfigurasi pangkalan data anda ditentukan dengan pengekodan UTF-8. Berikut ialah faktor utama yang perlu dipertimbangkan:
-
Pengekodan Fail PHP: Simpan skrip PHP sebagai UTF-8 tanpa BOM (Byte Order Mark).
-
Pengepala HTML: Tentukan set aksara sebagai UTF-8 dalam HTML tag.
-
Pengekodan Output PHP: Gunakan pengepala('Content-Type: text/html; charset=utf-8') untuk menetapkan pengekodan output kepada UTF-8.
-
Pengekodan Pangkalan Data dan Jadual MySQL: Ubah pangkalan data dan set aksara jadual kepada utf8, menggunakan arahan ALTER DATABASE dan ALTER TABLE.
-
Connection-Object Charset: Set charset untuk objek sambungan mysqli kepada UTF-8 dengan mysqli_set_charset($conn, 'utf8').
-
Pengekodan JSON: Jika menggunakan json_encode(), pertimbangkan untuk menggunakan bendera JSON_UNESCAPED_UNICODE untuk menghalang penukaran aksara kepada perenambelasan.
Selain itu, ingat bahawa semua komponen dalam aplikasi anda, termasuk HTML, PHP dan MySQL, mesti menggunakan tetapan pengekodan yang konsisten. Jika mana-mana langkah tidak segerak, isu watak mungkin timbul.
Nota:
- UTF-8 dengan sempang (utf-8) digunakan dalam HTML dan PHP, manakala UTF-8 tanpa sengkang (utf8) digunakan dalam MySQL.
- Pengumpulan berbeza daripada charset dalam MySQL. Kedua-duanya harus ditetapkan kepada utf8. Pengumpulan hendaklah sama ada utf8_general_ci atau utf8_unicode_ci.
- Untuk emoji, gunakan charset utf8mb4 dan bukannya utf8 dalam MySQL.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Aksara Cyrillic dengan betul dalam MySQL dan PHP dengan Pengekodan UTF-8?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!