首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JDBC检索latin1编码的结果

使用JDBC检索latin1编码的结果
EN

Stack Overflow用户
提问于 2011-04-05 15:23:56
回答 2查看 4.6K关注 0票数 4

我正在尝试使用JDBC从MySQL数据库中检索结果集,然后用它在BiRT中生成报告。连接字符串在BiRT中设置。

数据库为latin1:

代码语言:javascript
复制
SHOW VARIABLES LIKE 'c%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     | 
| character_set_connection | latin1                     | 
| character_set_database   | latin1                     | 
| character_set_filesystem | binary                     | 
| character_set_results    | latin1                     | 
| character_set_server     | latin1                     | 
| character_set_system     | utf8                       | 
| character_sets_dir       | /usr/share/mysql/charsets/ | 
| collation_connection     | latin1_swedish_ci          | 
| collation_database       | latin1_swedish_ci          | 
| collation_server         | latin1_swedish_ci          | 
| completion_type          | 0                          | 
| concurrent_insert        | 1                          | 
| connect_timeout          | 5                          | 
+--------------------------+----------------------------+

所以我一直在尝试纠正返回的奇怪的编码结果(德语字符)。我认为像这样用"latin1“检索结果集对我们来说"characterSetResults”属性是有意义的:

代码语言:javascript
复制
jdbc:mysql://localhost:3306/statistics?useUnicode=true&characterEncoding=latin1&characterSetResults=latin1

此连接字符串失败,通过推断,我发现它是以下属性:

代码语言:javascript
复制
characterSetResults=latin1

导致连接失败。这个错误是一个很长的java错误,对我来说意义不大。它的开头是:

代码语言:javascript
复制
org.eclipse.birt.report.data.oda.jdbc.JDBCException: There is an error in get connection, Communications link failure

Last packet sent to the server was 38 ms ago..
    at org.eclipse.birt.report.data.oda.jdbc.JDBCDriverManager.doConnect(JDBCDriverManager.java:262)
    at org.eclipse.birt.report.data.oda.jdbc.JDBCDriverManager.getConnection(JDBCDriverManager.java:186)
    at org.eclipse.birt.report.data.oda.jdbc.JDBCDriverManager.tryCreateConnection(JDBCDriverManager.java:706)
    at org.eclipse.birt.report.data.oda.jdbc.JDBCDriverManager.testConnection(JDBCDriverManager.java:634)
    at org.eclipse.birt.report.data.oda.jdbc.ui.util.DriverLoader.testConnection(DriverLoader.java:120)
    at org.eclipse.birt.report.data.oda.jdbc.ui.util.DriverLoader.testConnection(DriverLoader.java:133)
    at org.eclipse.birt.report.data.oda.jdbc.ui.profile.JDBCSelectionPageHelper.testConnection(JDBCSelectionPageHelper.java:687)
    at org.eclipse.birt.report.data.oda.jdbc.ui.profile.JDBCSelectionPageHelper.access$7(JDBCSelectionPageHelper.java:655)
    at org.eclipse.birt.report.data.oda.jdbc.ui.profile.JDBCSelectionPageHelper$7.widgetSelected(JDBCSelectionPageHelper.java:578)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234)

如果我将其更改为:

代码语言:javascript
复制
 characterSetResults=utf8

连接字符串连接时没有错误,但编码问题仍然存在。

有谁知道检索latin1的正确方法吗?是的,我知道可以使用UTF8,但这不是我的数据库……

谢谢你读到这篇文章,斯蒂芬

EN

回答 2

Stack Overflow用户

发布于 2011-04-05 22:38:43

经过一番挖掘,你有没有尝试过characterSetResults=ISO8859_1?这相当于latin1,有证据表明MySQL对此的处理要好得多。

我没有一个数据库来测试这一点上,但它看起来从我所读的是现场为你所需要的。

票数 0
EN

Stack Overflow用户

发布于 2015-10-28 14:46:37

在客户端指定字符编码时,请使用Java(Mysql connector-j-reference-charsets).So它应该通过使用jdbc:mysql://localhost:3306/statistics?useUnicode=true&characterEncoding=utf-8&characterSetResults=Cp1252来工作

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

https://stackoverflow.com/questions/5548526

复制
相关文章

相似问题

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