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

String UTF-8 dalam database MySQL menjadi kacau setelah perubahan konfigurasi

C3 83 C6 92 C3 82 C2 AA
C3 3F C2 AA

Itulah yang Anda dapatkan jika Anda memperlakukan urutan byte sebagai UTF-8, lalu menyandikannya sebagai ISO-8859-1. 3F apakah ? , yang telah dimasukkan sebagai karakter pengganti, karena UTF-8 C6 92 adalah U+0192 ƒ yang tidak ada di ISO-8859-1. Tapi itu memang ada di halaman kode Windows 1252 Eropa Barat, pengkodean yang sangat mirip dengan ISO-8859-1; di sana, itu byte 0x83.

C3 83 C2 AA

Ikuti putaran lain dari treat-as-UTF-8-bytes-and-encode-to-cp1252 dan Anda mendapatkan:

C3 AA

yang, akhirnya, UTF-8 untuk ê .

Perhatikan bahwa meskipun Anda menyajikan halaman HTML non-XML secara eksplisit sebagai ISO-8859-1, browser akan benar-benar menggunakan pengkodean cp1252, karena alasan historis yang buruk.

Sayangnya MySQL tidak memiliki pengkodean cp1252; latin1 adalah (dengan benar) ISO-8859-1. Jadi Anda tidak akan dapat memperbaiki data dengan membuang sebagai latin1 lalu memuat ulang sebagai utf8 (dua kali). Anda harus memproses skrip dengan editor teks yang dapat disimpan sebagai salah satu (atau misalnya di Python file(path, 'rb').read().decode('utf-8').encode('cp1252').decode('utf-8').encode('cp1252') ).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. data php dari database tidak ditampilkan setelah pencarian

  2. Cara termudah untuk mengubah array byte menjadi Blob di java

  3. Bagaimana mencegah injeksi sql di nodejs dan sekuel?

  4. hapus semua catatan dari tabel di mysql

  5. MySql tidak dapat memperbarui baris induk ketika saya memiliki ON UPDATE CASCADE