Java + MySQL - PreparedStatement在编码方面遇到麻烦

时间:2013-06-15 14:15:37

标签: java mysql encoding prepared-statement

我得到了与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的某个地方,因为当我准备语句时,打印到stdout这些字符只是“????”。有什么建议吗?

1 个答案:

答案 0 :(得分:5)

尝试将characterEncoding=UTF-8参数添加到JDBC连接URL的末尾。甚至将表格和列字符集设置为 UTF-8。article说明了如何执行此操作。

相关问题