Secondo la documentazione del driver MySQL JDBC è necessario impostare anche la codifica dei caratteri nell'URL di connessione JDBC. Ecco un esempio:
jdbc:mysql://localhost:3306/db_name?useUnicode=yes&characterEncoding=UTF-8
Altrimenti il driver MySQL JDBC utilizzerà la codifica predefinita della piattaforma per convertire i caratteri in byte prima dell'invio in rete, che nel tuo caso apparentemente non è UTF-8. Tutti i personaggi scoperti verranno quindi sostituiti da punti interrogativi.
Inoltre, quando si recuperano i dati, è necessario assicurarsi che la console/il file in cui si visualizzano/scrivano i caratteri supporti/utilizza anche UTF-8. Altrimenti diventeranno anche punti interrogativi. Come risolverlo dipende da come/dove stai visualizzando/scrivendo quei caratteri.
Vedi anche:
A proposito, non hai bisogno del SET NAMES
interroga qui.