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

Menghapus karakter peluru unicode

Begitu banyak hal yang bisa salah di sini, karena basis data, pengiriman formulir, dan literal string kode sumber semuanya terlibat. Saya akan menganggap Anda ingin menggunakan UTF-8, karena dengan pengkodean tipikal lainnya (CP1252, Latin1) Anda akan kacau ketika Anda ingin menggunakan json_ atau terima lebih dari ~200 karakter berbeda.

Hal pertama yang harus dilakukan adalah menghapus segala jenis kode konversi dll yang ditulis dengan tujuan mencoba memperbaiki masalah penyandian. Seperti utf8_encode , htmlentitites , *_replace .. apa pun.

Pengkodean sumber.

$str = "· Close up the server";

Saat menulis di atas, file sumber PHP perlu dikodekan secara fisik dalam UTF-8. Jika Anda menggunakan Windows, Anda harus secara eksplisit melakukan atau mengonfigurasi ini. UTF-8 tidak terjadi secara ajaib di Windows.

Formulir dikirimkan

Saat pengguna mengirimkan formulir, muatannya akan dalam penyandian apa pun yang Anda nyatakan sebagai halaman. Anda dapat mendeklarasikannya seperti ini:

header("Content-Type: text/html; charset=utf-8");

Tetapi siapa pun sebenarnya dapat mengirimkan byte arbitrer ke server Anda, jadi Anda harus memvalidasi input dalam UTF-8 sebelum melanjutkan. mb_check_encoding bagus.

Basis Data

Karena pada titik ini data Anda masuk sebagai UTF-8, string input Anda dalam UTF-8. Anda harus menentukan ini setelah menghubungkan ke database, dengan menentukan penyandian koneksi.

mysql_set_charset("utf8"); //After making the connection, and before any queries
//or $mysqli->set_charset( "utf8");

Ini membuat database membaca input Anda dalam UTF-8, dan mengkodekan outputnya dalam UTF-8. Anda juga ingin menyetel kolom/tabel/database ke UTF-8.

Urutan escape unicode \uxxxx atau \uhhhh\ullll atau \Uxxxxxxxx tidak didukung di PHP.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. di mana data aktual dalam db mysql disimpan di mesin linux?

  2. JSON_CONTAINS_PATH() Contoh di MySQL

  3. while($row =mysql_fetch_array($query)) tidak berfungsi untuk kedua kalinya

  4. Di CentOS7, tidak dapat memulai MySQL

  5. terhubung ke database mysql menggunakan perpustakaan phpseclib