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

bagaimana menangani aksen dan karakter aneh dalam database?

Koleksi mempengaruhi penyortiran teks saja, tidak berpengaruh pada kumpulan karakter sebenarnya dari data yang disimpan.

Saya akan merekomendasikan konfigurasi ini:

  1. Menyetel set karakter untuk seluruh DB saja, jadi Anda tidak perlu mengaturnya untuk setiap tabel secara terpisah. Kumpulan karakter diwarisi dari DB ke tabel ke kolom. Gunakan utf8 sebagai set karakter.

  2. Mengatur set karakter untuk koneksi DB . Jalankan kueri ini setelah Anda terhubung ke database:

    SET CHARACTER SET 'utf8'
    SET NAMES 'utf8'
    
  3. Menyetel kumpulan karakter untuk halaman , menggunakan header HTTP dan/atau tag meta HTML. Salah satunya sudah cukup. Gunakan utf-8 sebagai charset .

Ini sudah cukup.

Jika Anda ingin menyortir string Spanyol dengan benar, setel kolasi untuk seluruh basis data. utf8_spanish_ci harus bekerja (ci artinya Tidak Peka Huruf Besar-kecil ). Tanpa susunan yang tepat, karakter Spanyol beraksen akan diurutkan selalu terakhir.

Catatan :mungkin saja character set dari data yang sudah anda miliki dalam sebuah tabel rusak, karena character set anda konfigurasi yang salah sebelumnya. Anda harus memeriksanya menggunakan beberapa klien DB terlebih dahulu untuk mengecualikan kasus ini. Jika rusak, cukup masukkan kembali data Anda dengan konfigurasi set karakter yang tepat.

Bagaimana kumpulan karakter bekerja di database

  • objek memiliki kumpulan karakter atribut, yang dapat disetel secara eksplisit atau diwariskan (server> database> tabel> kolom), jadi opsi terbaik adalah menyetelnya untuk seluruh database

  • koneksi klien juga memiliki kumpulan karakter atribut dan itu memberi tahu database di mana pengkodean Anda mengirim data

Jika rangkaian karakter koneksi klien dan objek target berbeda, data yang Anda kirim ke database secara otomatis dikonversi dari rangkaian karakter koneksi ke rangkaian karakter objek.

Jadi jika Anda memiliki misalnya data di utf8 , tetapi koneksi klien setel ke latin1 , database akan memecah data, karena akan mencoba mengonversi utf8 seperti latin1 .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hitungan baris dengan PDO

  2. ketersediaan ruang kueri mysql

  3. Manakah pengkodean karakter terbaik untuk bahasa Jepang untuk tampilan DB, php, dan html?

  4. Bagaimana cara menyimpan zona waktu pengguna di mysql?

  5. Tidak ada pemetaan Dialek untuk tipe JDBC:1111