Java + MySQL -PreparedStatement 编码遇到问题

标签 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 中的某个地方,因为当我准备语句并将其打印到标准输出时,这些字符只是“????”。有什么建议吗?

最佳答案

尝试将 characterEncoding=UTF-8 参数添加到 JDBC 连接 URL 的末尾。甚至将表和列字符集设置为UTF-8。这个article解释了如何做到这一点。

关于Java + MySQL -PreparedStatement 编码遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17124563/

相关文章:

php - Yii2 与关系 + 加入 2 个表

C# Hash SHA256Managed 不等于 TSQL SHA2_256

.NET 内部编码

java - 为什么下面的继承方法使用父类(super class)成员

java - JPA/hibernate : call stored procedure with input and output parameters

mysql - 你如何在 (?) 调用中执行 SQL 查找?

python - 通过python代码从mysql读取时对编码问题感到困惑

java - 对于用户 id java.mail 抛出 'AUTHENTICATE failed.' ,但可以通过浏览器登录

java - 发送消息而不使用端口转发

MySql Entity Framework 数据库优先 - 主键=长?