Você precisa dizer ao driver JDBC para usar a codificação UTF-8 enquanto decodifica os caracteres que representam a consulta SQL em bytes. Você pode fazer isso adicionando
useUnicode=yes
e characterEncoding=UTF-8
parâmetros de consulta para a URL de conexão JDBC. jdbc:mysql://localhost:3306/db_name?useUnicode=yes&characterEncoding=UTF-8
Caso contrário, ele usará o conjunto de caracteres padrão da plataforma do sistema operacional. O driver MySQL JDBC está bem ciente sobre a codificação usada tanto no lado do cliente (onde o código JDBC é executado) quanto no lado do servidor (onde está a tabela DB). Qualquer caractere que não seja coberto pelo charset usado pela tabela DB será substituído por um ponto de interrogação.