dedlfix: xml utf8 speicherproblem

Beitrag lesen

echo $begrüßung;

ich speichere mit einem java programm den ganzen inhalt einer xml-datei in eine mysql-db (text-feld)
allerdings werden hier alle umlaute komisch kodiert Ü = Ü

Die Default-Kodierung einer XML-Datei ist UTF-8. Das Ü ist ein doppelt UTF-8-kodiertes Ü.

wenn ich allerdings die datei nur einlese und in eine textdatei am server ausgebe scheint es zu funktionieren da kommt nämlich das hier raus Ü = Ü was sehr nach utf8 aussieht.

komischerweiße steht in meiner datenbank bei kollation immer latin1_swedish - kann es sein das meine daten 2 mal kodiert werden?

Es gibt nicht nur eine Stelle in MySQL (ich nehme an, du verwendest dieses), an der man eine Kodierungsangabe einstellen kann. Du solltest dich mit dem Kapitel Character Set Support beschäftigen. Vor allem solltest du beim Kommunizieren mit dem DBMS explizit die Kodierung festlegen, die du zur Kommunikation zu verwenden gedenkst. Stichwort: SET NAMES ...

Wenn du in einer Spalte latin1 als Kodierung eingestellt hast, die Verbindung ebenfalls auf latin1 steht und du UTF-8-kodierte Daten sendest, gibt es beim Speichern und reinem Auslesen erstmal kein Problem. MySQL nimmt dabei keine Konvertierung vor, wertet die Bytes der UTF-8-Zeichen aber als eigenständige Zeichen. Das hat dann zur Folgen dass du keine String-Verarbeitung mit dem DBMS machen kannst.

weiters wenn ich eine testausgabe machen will und einzelne elemente des  xml-baumes ausgebe werden dich auch schon falsch ausgegeben (siehe oben)!

"falsch" oder "richtig" ist oftmals eine Frage der persönlichen Erwartung. Präzisiere deine Beobachtungen!

Wenn du Code-Ausschnitte postest, die Funktionen, Variablen und Dateiinhalte verwenden, die du nicht mit veröffentlicht hast, ist das für das Nachvollziehen nicht hilfreich. Oft hilft es bei der Fehlersuche, zu versuchen, das Problem mit dem kleinstmöglichen Code in einem neuen Script/Programm nachzustellen.

echo "$verabschiedung $name";