Sesuai dengan dokumentasi driver MySQL JDBC Anda juga perlu mengatur pengkodean karakter di URL koneksi JDBC. Ini contohnya:
jdbc:mysql://localhost:3306/db_name?useUnicode=yes&characterEncoding=UTF-8
Jika tidak, driver MySQL JDBC akan menggunakan pengkodean default platform untuk mengonversi karakter menjadi byte sebelum mengirim melalui jaringan, yang dalam kasus Anda tampaknya bukan UTF-8. Semua karakter yang ditemukan kemudian akan diganti dengan tanda tanya.
Juga, saat mengambil data, Anda perlu memastikan bahwa konsol/file tempat Anda menampilkan/menulis karakter juga mendukung/menggunakan UTF-8. Jika tidak, mereka akan menjadi tanda tanya juga. Cara memperbaikinya tergantung pada bagaimana/di mana Anda menampilkan/menulis karakter tersebut.
Lihat juga:
Omong-omong, Anda tidak memerlukan SET NAMES
tanya di sini.