Secara umum cara terbaik adalah dengan mengubah susunan tabel. Namun saya memiliki aplikasi lama dan tidak benar-benar dapat memperkirakan hasilnya apakah ini memiliki efek samping. Oleh karena itu saya mencoba entah bagaimana mengubah string menjadi beberapa format lain yang memecahkan masalah pemeriksaan. Apa yang saya temukan berfungsi adalah melakukan perbandingan string dengan mengubah string menjadi representasi heksadesimal dari karakternya. Pada database ini dilakukan dengan HEX(column).
Untuk PHP Anda dapat menggunakan fungsi ini:
public static function strToHex($string)
{
$hex = '';
for ($i=0; $i<strlen($string); $i++){
$ord = ord($string[$i]);
$hexCode = dechex($ord);
$hex .= substr('0'.$hexCode, -2);
}
return strToUpper($hex);
}
Saat melakukan query database, string UTF8 asli Anda harus diubah terlebih dahulu menjadi string iso (misalnya menggunakan utf8_decode()
PHP) sebelum menggunakannya di DB. Karena jenis pemeriksaan, database tidak dapat memiliki karakter UTF8 di dalamnya sehingga acara perbandingan harus berfungsi meskipun ini mengubah string asli (mengonversi karakter UTF8 yang tidak ada dalam ISO charset menghasilkan? Atau ini dihapus seluruhnya). Pastikan bahwa saat Anda menulis data ke database, Anda menggunakan konversi UTF8 ke ISO yang sama.