Zeichensatzcodierung

soa

Erfahrenes Mitglied
Hallo,

ich muss einen String von einem Windows System in eine Datenbank mit einem verwendeten Mac-Roman Zeichensatz schreiben. Das Resultat ist, dass Umlaute und Sonderzeichen nicht richtig dargestellt werden.


Mein Ansatz war dann diese Funktion zum Konvertieren in Mac-Roman:


Code:
private static String convertToMac(String text) throws UnsupportedEncodingException{
      
       byte[] code = null;
         
       code = text.getBytes(java.nio.charset.Charset.defaultCharset());   
      
       String translation = new String( code, "x-MacRoman");
      
       return translation;

    }

Die Ausgabe auf meinem System sieht dann genauso aus wie in der DB . Also werden die Umlaute falsch dargestellt. Die DB stellt den zeichensatz auch auch nicht korrekt dar.

Also haut mein Code so nicht hin. Meine Frage : Wie stell ich das richtig an ?

Danke
 
Ist dein System ein Mac?

Die Konsole kann normalerweise nur den Default-Zeichensatz das Systems darstellen. Wenn du prüfen willst ob die Daten korrekt in der Datenbank ankommen dann ließ sie wieder aus und konvertiere sie zurück.

Ich nehme an die Datenbank zeigt auch nur den System-Datensatz an (kenne ich zumindest von einigen Datenbanken so).
 
Hallo,

danke für die Antwort. Den Insert führe ich über Windows XP durch. Die DB rufe ich mit einem Mac Client auf. Also nicht direkt die DB, sondern ein Programm des Macs ruft den eingetragenen Datensatz auf.

Hier ( auf dem Mac-Client) wird der Text nicht richtig dargestellt. Die DB befindet sich auf irgendeinem beliebigen Server in unserem Netzwerk. Das bedeutet, dass der Eintrag auch fasch konvertiert wurde.

Jetzt möchte ich den String ( UFT-8) von einem Windows System in die DB eintragen ( Mac-Roman) . Das muss klappen. Das auslesen des Strings ist dann eher sekundär.

Ich gehe davon aus, dass meine Funktion einfach müll ist. Ich habe leider mit Zeichenkettenkonvertierung wenig Erfahrung.

Das DB-FELD ist ein varchar, also kann ich wohl nur einen String eintragen, den ich im Vorwege irgendwie mit java konvertiere.

Danke
 
Zurück