Masalah penyandian karakter MySQL adalah di mana database MySQL Anda menyebabkan karakter UTF8 (seperti , dan ö) ditampilkan secara salah. Ini karena secara default, MySQL menggunakan set karakter latin1. Masalah ini menjadi penting karena sifat global konten web akhir-akhir ini. Anda dapat menyelesaikannya dengan mengatur pengkodean karakter MySQL ke UTF8. Ini dapat dilakukan dengan berbagai cara.
- Jalankan kueri “SET NAMES ‘utf8’” di awal setiap koneksi – ini akan memaksa MySQL untuk menggunakan UTF8 selama masa koneksi tersebut. Ini adalah opsi yang bagus jika Anda tidak memiliki akses ke file my.cnf (linux/mac) / my.ini (windows).
- Temukan dan edit file my.cnf (linux/mac) / my.ini (windows) di server database Anda. Tambahkan baris berikut ke mysqld bagian :[mysqld] default-character-set=utf8 skip-character-set-client-handshake Sekarang jika Anda me-restart server MySQL, pengkodean karakter MySQL harus default ke UTF8
- Bagaimana jika Anda sudah memiliki database? Bagaimana cara mengubah kontennya menjadi UTF8? Anda dapat menggunakan 3 kueri berikut. Ganti DATABASE_NAME, TABLE_NAME dan FIELD_NAME dengan nilai Anda. ubah tabel TABLE_NAME ubah gumpalan FIELD_NAME; ubah basis data DATABASE_NAME charset=utf8; ubah tabel TABLE_NAME ubah kumpulan karakter FIELD_NAME varchar(255) utf8; Ubah bidang menjadi BLOB, itu adalah jenis bidang biner. Kemudian kita ubah set karakter database menjadi utf8. Akhirnya kami mengonversi bidang kami kembali ke teks atau varchar.
Anda dapat memeriksa pengkodean karakter MySQL Anda dengan kueri berikut.
Pengkodean karakter MySQL default
mysql> show variables like 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | latin1 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)
Pengkodean karakter MySQL yang diperlukan
mysql> show variables like 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)
Anda juga perlu memastikan kerangka pemrograman Anda seperti Django, Code Igniter, dll menggunakan pengkodean UTF8.