En fait je ne comprend pas...
Je fais quelques tests et je ne comprend pas l'impact de SET NAMES.
Je passe une colonne de ma table en latin1-general-ci.
Je laisse les variables de la base de données character_set_client, character_set_connection, character_set_result en utf8.
J'appelle PDO avec SET NAMES latin1.
Le fichier PHP qui récupère cette donnée est en utf8, selon mon éditeur de texte. Il crée un email écrit en dur avec aussi la donnée récupérée. L'email a le header Content-type: text/plain;charset=utf-8
Quand je reçois l'email, les accents de la chaîne de caractère récupérée depuis la base sont bien affichés MAIS les accents du message en dur dans mon fichier PHP sont mal affichés, comme quand du iso-8859 essaie d'afficher de l'utf8 (é devient A©).
Je m'attendais à ce que ce soit l'inverse !
La base donne des résultats en utf8 et PDO se connecte en latin, alors il devrait mal afficher la donnée. Alors que mon texte en dur dans le code PHP n'a pas changé, quand je fais SET NAMES utf8 il s'affiche bien, je ne vois pas pourquoi les options de PDO influent dessus, le texte est en dur dans mon code PHP !