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

Tidak dapat memasukkan karakter Yunani dengan benar ke dalam database mysql

Masalah Anda terkait dengan pengkodean charset Anda. Penting bahwa seluruh your Anda kode memiliki rangkaian karakter yang sama untuk menghindari masalah di mana karakter ditampilkan secara tidak benar.

Ada beberapa pengaturan yang perlu didefinisikan dengan benar dan saya sangat merekomendasikan UTF-8, karena ini memiliki sebagian besar huruf yang Anda perlukan (Skandinavia, Yunani, Arab, Rusia, dll.).

Berikut adalah daftar kecil hal-hal yang harus disetel ke rangkaian karakter tertentu.

Tajuk

  • Menyetel charset di header HTML dan PHP ke UTF-8

    • PHP:

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

      (Header PHP harus ditempatkan sebelum apa saja keluaran (gema, spasi,HTML)!)

    • HTML:

      <meta charset=utf-8" />
      

      (Header HTML ditempatkan di dalam <head> / </head> tag)

Koneksi

  • Anda juga perlu menentukan rangkaian karakter di koneksi itu sendiri . Untuk contoh PDO Anda, lakukan seperti ini

    $handler = new PDO('mysql:host=localhost;dbname=database;charset=utf8', 'username', 'password', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET UTF8"));
    

    Perhatikan charset=utf8 -atribut. MySQL-API lain memiliki cara berbeda untuk melakukan ini jika Anda menggunakan sesuatu yang lain di masa mendatang.

Basis Data

  • basis data . Anda dan tabelnya harus disetel ke UTF-8. Perhatikan bahwa rangkaian karakter bukan sama dengan collation. Sepertinya Anda sudah menyetel susunan ke UTF-8, jadi itu bagus, tetapi lakukan hal yang sama untuk seluruh database dan semua tabel.

    Anda dapat melakukannya dengan menjalankan kueri di bawah ini sekali untuk setiap database dan tabel (misalnya di phpMyAdmin)

    ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci; 
    ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
    

    Perhatikan bahwa data apa pun yang sudah disimpan dalam database tidak akan secara otomatis memperbaiki rangkaian karakter yang rusak. Jadi penting Anda melakukan ini sebelum memasukkan data, atau Anda memasukkannya kembali setelah mengatur rangkaian karakter.

spesifikasi php.ini

  • Di php.ini . Anda file, Anda harus menentukan charset default untuk platform Anda, seperti ini

    default_charset = "utf-8";
    

Pengenkodean file

  • Penting juga bahwa .php file itu sendiri dikodekan UTF-8. Jika Anda menggunakan Notepad++ untuk menulis kode, ini dapat dilakukan di menu tarik-turun "Format" di bilah tugas.

Emoji

  • Di MySQL (baik di tabel, database, dan objek koneksi), Anda perlu menentukan utf8mb4 charset, sebagai lawan dari utf8 biasa , jika Anda ingin bekerja dengan emoji.

Saya tidak tahu banyak tentang Java, tetapi jika Anda juga dapat mengatur atribut ke UTF-8 di sana, lakukanlah. Intinya, semua yang dapat disetel ke rangkaian karakter tertentu harus disetel ke yang sama.

Jika Anda mengikuti semua petunjuk di atas, kemungkinan masalah Anda akan terpecahkan. Jika tidak, Anda dapat melihat postingan StackOverflow ini: UTF-8 sampai habis .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. kaus kaki proxy mysql

  2. Bagaimana cara menambahkan referensi ke konektor MySQL untuk .NET?

  3. mysql GROUP_CONCAT duplikat

  4. Bagaimana saya bisa mengulang hasil MySQL yang ditetapkan lebih dari sekali menggunakan fungsi mysql_*?

  5. Bagaimana saya bisa mendapatkan jumlah pelanggan per hari dengan pelanggan unik dan berulang untuk tanggal tertentu?