iso8859-1 nach utf8 wandeln

  • Antworten:4
Jürgen
  • Forum-Beiträge: 50

09.09.2012, 14:14:55 via Website

Hi,

ich google mir gerade die Finger wund aber komm nicht weiter.
Ich möchte einen String der Sonderzeichen nach iso8859-1 enthält wandeln in utf8 und in einen TextView anzeigen.
Leider kann ich nichts daran ändern, so das mir der String gleich im richtigen Format vor liegt.

Der String enthält folgenden Text (und kommt von Windows):
"äöüß test test"
Wenn ich diese Datei als uft8 öffne steht da:
"���� test test"
Mit meiner jetzigen Bemühung mache ich daraus:
"???? test test"
1String utf8String = new String ( ORIGINALSTING.getBytes("ISO-8859-1"), "UTF8");
2 tv_View1.setText(utf8String);


Wäre sehr dankbar, für einen guten Tip.

Schönes WE
J.

— geändert am 09.09.2012, 14:15:45

Antworten
Jürgen
  • Forum-Beiträge: 50

09.09.2012, 16:44:18 via Website

Erst mal Danke für den Link.

Aber an der Seite beise ich mir schon paar Tage die Zähne aus.
Entweder es scheidert an der Typenumwandlung oder es passiert einfach gar nichts
oder ich bin einfach zu doof :)

Bin also immer noch auf der Suche nach einer Lösung.

Gruß
J.

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

09.09.2012, 23:11:53 via Website

Jürgen

1String utf8String = new String ( ORIGINALSTING.getBytes("ISO-8859-1"), "UTF8");
2 tv_View1.setText(utf8String);
Was der Code da macht ist ja auch was anderes als das was du willst.

Dort steht:
Gibt mir die Zeichen des Strings im Byte-Format und verwende dabei ISO als Encoding
und lese diese Bytes dann in einen neuen String und interpretiere sie als UTF-8.

Ist klar, dass dabei das Encoding zerschossen wird.

Während der Laufzeit sind in Java als Strings als UNICODE/UTF-8 im Speicher.
Wo du ansetzen musst ist schon beim Einlesen der Datei. Dort musst Du die gelesenen bytes mit dem passenden Encoding in die Java-Strings einlesen.

BufferdReader usw. können entsprechend parametrisiert werden.
Wenn du die Daten irgendwoher als Byte-Array bekommst, musst halt entsprechend mit dem ERSTEN Umwandeln in einen String das entsprechende Encoding übergeben.
Unter Windows also z.B.
1String myString = new String(byteArray, "windows-1252")

Oder halt ISO-8859-1

Wichtig ist halt zu verstehen, dass das Encoding, das man übergibt NICHT das Wunsch-Encoding ist, das man gerne hätte, sondern das Encoding in dem die Daten vorliegen. Der String ist am Ende IMMER UTF-8.

Antworten
Jürgen
  • Forum-Beiträge: 50

10.09.2012, 15:53:26 via Website

Danke für die sehr aufschlussreiche Erklärung.

Werde mich dann wohl noch ein mal mit dem Lesen der Datei befassen müssen.
Naja, aller Anfang ist eben schwer aber dafür klappt das alles schon recht gut.

THX
Gruß
J.

Antworten