Debe decirle al controlador JDBC que use la codificación UTF-8 mientras decodifica los caracteres que representan la consulta SQL en bytes. Puede hacerlo agregando useUnicode=yes
y characterEncoding=UTF-8
consulta los parámetros a la URL de conexión de JDBC.
jdbc:mysql://localhost:3306/db_name?useUnicode=yes&characterEncoding=UTF-8
De lo contrario, utilizará el conjunto de caracteres predeterminado de la plataforma del sistema operativo. El controlador JDBC de MySQL es muy consciente de la codificación utilizada tanto en el lado del cliente (donde se ejecuta el código JDBC) como en el lado del servidor (donde está la tabla DB). Cualquier carácter que no esté cubierto por el juego de caracteres utilizado por la tabla DB será reemplazado por un signo de interrogación.