A codificação de caracteres, como os fusos horários, é uma fonte constante de problemas.
O que você pode fazer é procurar por quaisquer caracteres "high-ASCII", pois esses são caracteres ou símbolos acentuados LATIN1 ou o primeiro de um caractere multibyte UTF-8. Dizer a diferença não será fácil a menos que você trapaceie um pouco.
Para descobrir qual codificação está correta, basta
SELECT
duas versões diferentes e comparar visualmente. Aqui está um exemplo: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'), ']')
Isso se torna incomumente complicado porque o mecanismo regexp do MySQL parece ignorar coisas como
\x80
e torna necessário usar o UNHEX()
método em vez disso. Isso produz resultados como este:
latin1 utf8
----------------------------------------
Björn Björn