Enligt dokumentationen för MySQL JDBC-drivrutinen du måste också ställa in teckenkodningen i JDBC-anslutningsadressen. Här är ett exempel:
jdbc:mysql://localhost:3306/db_name?useUnicode=yes&characterEncoding=UTF-8
Annars kommer MySQL JDBC-drivrutinen att använda plattformens standardkodning för att konvertera tecknen till byte innan den skickas över nätverket, vilket i ditt fall uppenbarligen inte är UTF-8. Alla tecken som inte är täckta kommer då att ersättas av frågetecken.
När du hämtar data måste du också se till att konsolen/filen där du visar/skriver tecknen till också stöder/använder UTF-8. Annars blir de också frågetecken. Hur man fixar det beror på hur/var du visar/skriver dessa tecken till.
Se även:
Förresten, du behöver inte SET NAMES
fråga här.