【问题标题】:Java + MySQL - PreparedStatement troubles with encodingJava + MySQL - PreparedStatement 编码问题
【发布时间】:2013-06-12 01:14:39
【问题描述】:

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

【问题讨论】:

  • 当它不起作用时会发生什么?并且不要被控制台所迷惑,您可能需要将其配置为显示 ANSI 以外的其他字符集。

标签: java mysql encoding prepared-statement


【解决方案1】:

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

【讨论】:

  • 是的。或者我认为 MySQL 中的任何适当编码是什么?对于捷克语,它也可以是 ISO-8859-2。
  • @tbsalling 绝对是。
  • 实际上,我认为包含“čččč”的源文件的编码也可能很重要。这是在 IDE/编辑器中配置的,并且必须与准备 JDBC 连接时声明/选择的编码匹配。
  • 谢谢,characterEncoding=utf8 已修复。我已经将所有表和字段设置为 UTF-8,所以可能必须完全完成。
  • 关于在哪里设置这个 JDCB 连接 url 的任何想法?在任何地方都找不到它(在我的 netbeans 项目中).. :p
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-16
  • 2014-12-17
  • 2010-12-15
  • 1970-01-01
  • 2011-04-19
  • 1970-01-01
相关资源
最近更新 更多