La codifica dei caratteri, come i fusi orari, è una fonte costante di problemi.
Quello che puoi fare è cercare qualsiasi carattere "ASCII alto" poiché questi sono caratteri o simboli accentati LATIN1 o il primo di un carattere multibyte UTF-8. Dire la differenza non sarà facile a meno che tu non bari un po'.
Per capire quale codifica è corretta, basta SELECT
due versioni differenti e confrontare visivamente. Ecco un esempio:
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'), ']')
Questo è reso insolitamente complicato perché il motore MySQL regexp sembra ignorare cose come \x80
e rende necessario l'uso di UNHEX()
metodo invece.
Questo produce risultati come questo:
latin1 utf8
----------------------------------------
Björn Björn