微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐