Bem, descobri que
SET NAMES
não é realmente tão grande. Dê uma olhada nos documentos
... O que eu normalmente faço é executar 4 consultas:
SET CHARACTER SET 'UTF8';
SET character_set_database = 'UTF8';
SET character_set_connection = 'UTF8';
SET character_set_server = 'UTF8';
Dê uma chance e veja se isso funciona para você...
Ah, e lembre-se, todos os caracteres UTF-8 <=127 também são caracteres ISO-8859-1 válidos. Portanto, se você tiver apenas caracteres <=127 no fluxo,
mb_detect_encoding
cairá no charset de maior prevalência (que é por padrão "UTF-8")...