Bueno, encontré que SET NAMES
no es realmente tan bueno. Eche un vistazo a los documentos
...
Lo que normalmente hago es ejecutar 4 consultas:
SET CHARACTER SET 'UTF8';
SET character_set_database = 'UTF8';
SET character_set_connection = 'UTF8';
SET character_set_server = 'UTF8';
Pruébelo y vea si eso lo hace por usted...
Ah, y recuerde, todos los caracteres UTF-8 <=127 también son caracteres ISO-8859-1 válidos. Entonces, si solo tiene caracteres <=127 en la transmisión, mb_detect_encoding
caerá en el conjunto de caracteres de mayor prevalencia (que es por defecto "UTF-8")...