从java查询latin1列

我想通过这样的标题进行查询:

String title = "transfusión";
String sql = "SELECT id FROM graph WHERE title=?";
PreparedStatement st = conn.prepareStatement(sql);
st.setString(1, title);
st.executeQuery();

问题是标题列charset是latin1,我的java文件编码是utf8.当title变量包含特殊字符(如重音符号)时,查询永远不会找到结果.

我正在使用MySQL数据库,连接URL是:

JDBC:MySQL的:// mysite的:3306 / MyDatabase的autoReconnect的=真安培;的characterEncoding = LATIN1&安培; useOldAliasMetadataBehavior =真

我尝试使用useUnicode = true / false或characterEncoding = latin1 / utf8 / auto多个替代品,但我从来没有得到任何结果.

另外我尝试在准备语句之前将title和sql转换为ISO-8859-1:

title =  new String(title.getBytes("UTF-8"), "ISO-8859-1");
sql =  new String(sql.getBytes("UTF-8"), "ISO-8859-1");

我无法更改数据库的字符集,因为我不是管理员.

我怎么解决这个问题?

PD:抱歉我的英文.

最佳答案 请参阅表5.3 MySQL到Java编码名称转换:
http://dev.mysql.com/doc/connector-j/en/connector-j-reference-charsets.html

jdbc:mysql://mysite:3306/mydatabase?autoReconnect=true&characterEncoding=
Cp1252
&useOldAliasMetadataBehavior=true

点赞