Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Karakter non-Inggris yang disimpan, ada '?????' - Masalah Kumpulan Karakter MySQL

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 latin1 berlaku (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 .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. tampilkan nama bulan alih-alih nomor bulan di mysql

  2. Cara memvalidasi kredensial login pengguna di android menggunakan PHP, MySql dengan bantuan json

  3. Kolom 'Perbarui Timestamp' MySQL - Pemicu

  4. Bagaimana cara memperbaiki kesalahan nilai string yang salah?

  5. Sistem Login/Registrasi dengan php dan mysql