简体   繁体   English

Java + MySQL-PreparedStatement编码问题

[英]Java + MySQL - PreparedStatement troubles with encoding

I got this program that interacts with MySQL. 我得到了与MySQL交互的程序。 It works but acts strangely when non-ASCII occur in the statement. 它可以工作,但是当语句中出现非ASCII时,行为却很奇怪。 I'm using prepared statement: 我正在使用准备好的语句:

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();
}

It works fine unless I use something like "čččč" in _val2. 除非我在_val2中使用“čččč”之类的东西,否则它都可以正常工作。 Problem is somewhere in Java because when I prepare the statement a print it to stdout those characters are just "????". 问题出在Java的某个地方,因为当我准备一条语句以打印出来以标出这些字符时,这些字符只是“ ????”。 Any suggestions? 有什么建议么?

Try adding characterEncoding=UTF-8 parameter to the end of your JDBC connection URL. 尝试将characterEncoding=UTF-8参数添加到JDBC连接URL的末尾。 Even set the table and column character set to UTF-8. 甚至将表和列字符集设置为UTF-8。 This article explains how to do that. 本文介绍了如何执行此操作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM