Java + MySQL - проблемы PreparedStatement с кодировкой

Я получил эту программу, которая взаимодействует с MySQL. Это работает, но действует странно, когда в выражении присутствует не-ASCII. Я использую подготовленное заявление:

public ResultSet executeQuery(Connection _conn, int _val1, String _val2) throws SQLException {
    PreparedStatement stmt = _conn.prepareStatement("SELECT c.name  FROM categories c,languages l WHERE c.language = l.id AND c.user = ? AND l.name = ?;");
    stmt.setInt(1, _val1);
    stmt.setString(2, _val2);
    return stmt.executeQuery();
}

Это работает нормально, если я не использую что-то вроде "čččč" в _val2. Проблема где-то в Java, потому что, когда я готовлю оператор к выводу на печать, эти символы просто "????". Какие-либо предложения?

1 ответ

Решение

Попробуйте добавить characterEncoding=UTF-8 параметр до конца вашего URL соединения JDBC. Даже установить таблицу и столбец набор символов в UTF-8. Эта статья объясняет, как это сделать.

Другие вопросы по тегам