首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从java查询latin1列

从java查询latin1列
EN

Stack Overflow用户
提问于 2015-12-22 16:38:23
回答 2查看 985关注 0票数 5

我想按标题进行如下查询:

代码语言:javascript
复制
String title = "transfusión";
String sql = "SELECT id FROM graph WHERE title=?";
PreparedStatement st = conn.prepareStatement(sql);
st.setString(1, title);
st.executeQuery();

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

我使用的是一个MySQL数据库,连接网址是:

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

我尝试了使用useUnicode=true/falsecharacterEncoding=latin1/utf8/auto的多种替代方法,但没有得到任何结果。

此外,在准备如下语句之前,我尝试将titlesql转换为ISO8859-1

代码语言:javascript
复制
title =  new String(title.getBytes("UTF-8"), "ISO-8859-1");
sql =  new String(sql.getBytes("UTF-8"), "ISO-8859-1");

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

我该怎么解决呢?

警察:对不起我的英语。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-22 17:13:13

请参见表5.3 MySQL到:

http://dev.mysql.com/doc/connector-j/en/connector-j-reference-charsets.html

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

票数 2
EN

Stack Overflow用户

发布于 2015-12-23 10:37:46

谢谢你@Harlam。你的解决方案不完全正确,但你帮我找到了正确的答案。我必须将标题变量转换为Cp1252而不是ISO-8859-1,并且它工作得很好:

title = new String(title.getBytes("UTF-8"), "Cp1252");

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34420480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档