Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用JDBC检索latin1编码的结果_Mysql_Jdbc_Birt_Latin1 - Fatal编程技术网

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

Mysql 使用JDBC检索latin1编码的结果,mysql,jdbc,birt,latin1,Mysql,Jdbc,Birt,Latin1,我试图使用JDBC从MySQL数据库检索结果集,然后用它在BiRT中生成报告。连接字符串在BiRT中设置 数据库为拉丁1: SHOW VARIABLES LIKE 'c%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+------------------

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

数据库为拉丁1:

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                          | 
+--------------------------+----------------------------+
所以我一直在尝试更正返回的奇怪的编码结果(德语字符)。我认为使用“characterSetResults”属性将结果集检索为“latin1”是有意义的,如下所示:

jdbc:mysql://localhost:3306/statistics?useUnicode=true&characterEncoding=latin1&characterSetResults=latin1
此连接字符串失败,经过推断,我发现它是以下属性:

characterSetResults=latin1
正在导致连接失败。这个错误是一个很长的java错误,对我来说意义不大。首先是:

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)
如果我将此更改为:

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

有人知道检索拉丁语1的正确方法吗?是的,我知道UTF8是可以使用的,但这不是我的数据库

感谢您阅读此文,
斯蒂芬

经过一番挖掘,您是否尝试过
characterSetResults=ISO8859_1
?这相当于拉丁语1,有证据表明MySQL处理这一点要好得多


我没有一个DB来测试它,但它看起来就像我读到的一样,可以满足您的需要。

在客户端指定字符编码时,请使用Java样式名称().因此,它应该通过使用jdbc工作:mysql://localhost:3306/statistics?useUnicode=true&characterEncoding=utf-8&characterSetResults=Cp1252

恐怕这不起作用。我认为唯一的方法是将数据库转换为使用UTF8,方法是转储它,然后再次将其导入一个数据库,该数据库的UTF8编码在
CREATE database
子句中定义。我也有同样的问题。你解决了吗?