Podle dokumentace ovladače MySQL JDBC musíte také nastavit kódování znaků v adrese URL připojení JDBC. Zde je příklad:
jdbc:mysql://localhost:3306/db_name?useUnicode=yes&characterEncoding=UTF-8
Jinak ovladač MySQL JDBC použije výchozí kódování platformy k převodu znaků na bajty před odesláním přes síť, což ve vašem případě zjevně není UTF-8. Všechny nezakryté znaky pak budou nahrazeny otazníky.
Při načítání dat se také musíte ujistit, že konzola/soubor, do kterého zobrazujete/zapisujete znaky, také podporuje/používá UTF-8. Jinak se z nich také stanou otazníky. Jak to opravit závisí na tom, jak/kde tyto znaky zobrazujete/zapisujete.
Viz také:
Mimochodem, nepotřebujete SET NAMES
dotaz zde.