jdbc:mysql://localhost:3306/db_name?useUnicode=yes&characterEncoding=UTF-8
Sinon, le pilote MySQL JDBC utilisera l'encodage par défaut de la plate-forme pour convertir les caractères en octets avant de les envoyer sur le réseau, ce qui dans votre cas n'est apparemment pas UTF-8. Tous les caractères non couverts seront alors remplacés par des points d'interrogation.
De plus, lors de la récupération des données, vous devez vous assurer que la console/le fichier dans lequel vous affichez/écrivez les caractères prend également en charge/utilise UTF-8. Sinon, ils deviendront également des points d'interrogation. La façon de résoudre ce problème dépend de la façon dont/où vous affichez/écrivez ces caractères.
Voir aussi :
Au fait, vous n'avez pas besoin du SET NAMES
requête ici.