# JDBC:ODBC chinesische Zeichen aus Memofelder



## flashbob (3. Jun 2005)

Hallo

Habe folgendes Problem zu meiner Access Datenbank. Beim auslesen der Datensätze mit chinesischen Zeichen bekomme ich als Resultset nur ?? bzw Hex(3f). In der Datenbank sind die Zeichen korrekt dargestellt.


Die Verbindung baue ich foldender Maßen auf.

```
private Connection connectToDatabase(String dbName) throws Exception {
	String url = "jdbc:odbc:" + dbName;
	String user = "";
	String password = "";
		
    Properties userInfo = new Properties();
        userInfo.setProperty("user", user);
        userInfo.setProperty("password", password);
        userInfo.setProperty ("charSet", "Big5" );
        

    // Loading the JDBC-ODBC bridge driver
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

		
    // connect to database "TexteDb"
    //return DriverManager.getConnection(url, user, password);
    return DriverManager.getConnection(url, userInfo);
    }
```


Dabei spielt es keine Rolle ob ich die Spalten mit:

resultSet.getString("Chinesisch");
resultSet.getBytes("Chinesisch");

anspreche, als Resultat erhalte ich ???.


----------



## DP (10. Jun 2005)

> 20.8.4 Unicode in der Spalte korrekt auslesen
> Der Aufruf von getString() führt bei Unicode-kodierten Zeichenfolgen in der Datenbank unter Umständen zu Problemen. Bemerkbar macht sich dies durch seltsame Zeichen wie ? oder Hexadezimal 0x3f, die an Stelle der Sonderzeichen im String auftauchen. Das liegt oft daran, dass der JDBC-Treiber die Kodierung nicht kennt und einfach jedes ASCII-Byte in ein Char umwandelt, obwohl in der Datenbank Umlaute als 2-Byte Unicode oder Latin-1 kodiert werden.
> 
> Bei eigenen Datenbanken funktioniert es, die Kodierung beim Verbindungsaufbau ausdrücklich zu setzen, um damit eine Konvertierung vorzuschreiben. getString() sollte dann die richtige Zeichenkette liefern. Bei anderen Datenbanken funktioniert es wiederum, den Text als Bytefeld zu holen und dann ausdrücklich umzukodieren. Das Folgende ist etwa eine Lösung für PostgreSQL.
> ...



http://www.galileocomputing.de/openbook/javainsel4/javainsel_20_007.htm


----------



## flashbob (13. Jun 2005)

Das habe ich schon ausprobiert.

Ich erhalte nur 3f also ???.


----------

