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 inidefault_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 dariutf8
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 .