Kabar buruk. Tapi pertama-tama, periksa kembali:
SELECT col, HEX(col)...
untuk melihat apa yang ada di tabel. Jika hex menunjukkan 3F , maka datanya hilang. Disimpan dengan benar, dal karakter harus hex D8AF; hah adalah hex D8AD .
Apa yang terjadi:
- Anda memiliki data yang disandikan utf8 (baik)
SET NAMES latin1berlaku (default, tapi salah)- kolom dideklarasikan
CHARACTER SET latin1(default, tapi salah)
Saat Anda INSERTed data, itu dikonversi ke latin1, yang tidak memiliki nilai untuk karakter Farsi, jadi tanda tanya menggantikannya.
Obatnya (untuk `INSERT mendatang):
- Kode ulang aplikasi Anda menggunakan antarmuka mysqli_* alih-alih antarmuka mysql_* yang tidak digunakan lagi.
- data yang disandikan utf8 (baik)
- mysqli_set_charset('utf8')
- periksa apakah kolom dan/atau tabel default adalah
CHARACTER SET utf8 - Jika Anda menampilkan di halaman web,
<meta...utf8>harus berada di dekat bagian atas.
Pembahasan di atas adalah tentang CHARACTER SET , pengkodean karakter. Sekarang untuk tip tentang COLLATION , yang digunakan untuk membandingkan dan menyortir.
Jika Anda ingin ini diperlakukan sama:'بِسْمِ' ='بسم', gunakan utf8_unicode_ci (bukan utf8_general_ci) untuk COLLATION .