我有一个带有窗口1251编码的dbase文件。我为这个文件创建了一个ODBC数据源,我想用java的JDBC-ODBC桥访问它,代码如下:
PrintStream ps = new PrintStream(System.out, true, "UTF-8");
System.out.println("TEST: Русский язык");
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Properties properties = new Properties();
properties.put("charSet", "windows-1251");
Connection conn = DriverManager.getConnection( "jdbc:odbc:test_ds",properties);
Statement statement = conn.createStatement();
String sql = "SELECT * FROM table";
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
System.out.println(resultSet.getString("DESC"));
}
对于测试println(第2行),字符编码是正常的,但是来自dbase的数据编码不正确。
我能够使用相同的编码打开带有LibreOffice的dbf文件,其中一切正确。
有没有机会正确设置编码?
是否可以在连接字符串中设置连接编码?
编辑:经过进一步调查,我认为问题与ODBC有关。我试图用Excel打开定义的数据源,编码错误。 (我没有机会为odbc连接设置编码,也没有为Excel连接设置编码)
答案 0 :(得分:0)
这适用于我的西里尔字符:
properties.put("charSet", "Cp1251");