Teckenkodning, liksom tidszoner, är en ständig källa till problem.
Vad du kan göra är att leta efter alla "hög-ASCII"-tecken eftersom dessa antingen är LATIN1-accenttecken eller symboler, eller det första av ett UTF-8 multi-byte-tecken. Att se skillnaden kommer inte att bli lätt om du inte fuskar lite.
För att ta reda på vilken kodning som är korrekt SELECT
två olika versioner och jämföra visuellt. Här är ett exempel:
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'), ']')
Detta görs ovanligt komplicerat eftersom MySQL regexp-motorn verkar ignorera saker som \x80
och gör det nödvändigt att använda UNHEX()
metod istället.
Detta ger resultat som detta:
latin1 utf8
----------------------------------------
Björn Björn