Encoding karakter, seperti zona waktu, adalah sumber masalah yang konstan.
Yang dapat Anda lakukan adalah mencari karakter "ASCII tinggi" karena ini adalah karakter atau simbol beraksen LATIN1, atau yang pertama dari karakter multi-byte UTF-8. Mengatakan perbedaan tidak akan mudah kecuali Anda sedikit curang.
Untuk mengetahui pengkodean apa yang benar, Anda cukup SELECT
dua versi yang berbeda dan membandingkan secara visual. Ini contohnya:
SELECT CONVERT(CONVERT(name USING BINARY) USING latin1) AS latin1,
CONVERT(CONVERT(name USING BINARY) USING utf8) AS utf8
FROM users
WHERE CONVERT(name USING BINARY) RLIKE CONCAT('[', UNHEX('80'), '-', UNHEX('FF'), ']')
Ini dibuat sangat rumit karena mesin regexp MySQL tampaknya mengabaikan hal-hal seperti \x80
dan membuatnya perlu menggunakan UNHEX()
sebagai gantinya.
Ini menghasilkan hasil seperti ini:
latin1 utf8
----------------------------------------
Björn Björn