Zeichenkodierung (xml->php->db->php->h

Hallo Wissende,

ich habe schon viele viele Stunden mit diesem Problem verbracht, wenn nicht ganze Monate (natürlich nicht un unterbrochen) Jedesmal wenn ich neu anfange muss ich irgendwann aufgeben… vll. könnt ihr das ja ändern.

Zum Thema gehören auch PHP und MySql ich hoffe das macht dieses Board nicht unpassend.

Step By Step:

Ich hole mir mit PHP eine externe XML Datei ( ISO-8859-1 )
Ich Arbeite mit der PHP Klasse DomDocument (die intern glaube ich mit UTF-8 arbeitet)
Lasse ich sie mir per echo ausgeben, ist alles ok (HTML UTF-8 )

Ich Speicher die Daten in der Datenbank ( UTF-8 )
Gucke ich mir Hier die Daten an (HeidiSQL) habe ich Artefakte statt Umlaute (bzw. Sonderzeichen)

Ich lese die Daten mit PHP aus der Datenbank
Lasse ich sie mir dann mich echo ausgeben ist alles ok.

Problem::
Ich kann die Daten in der Datenbank nicht mit Eingebtexten aus der Seite vergleichen. (Sehr blöd z.B. wenn zum login gebraucht wird)

Wenn ich beim speichern in die datenbank die PHP Funktion utf8_decode() benutze wird es mir in HeidiSQL korrekt angezeigt, aber nicht beim anschließenden auslesen.

Da ich schon sehr sehr viel hin und her Probiert habe, habe ich sicherlich jetzt etwas nicht aufgezählt. Wenn also fragen offen sind bitte posten ich werde mir größte mühe geben alle Daten bereit zu stellen um dieses Problem zu lösen.

Ich komme bei meinem Projekt einfach nicht weiter wenn ich das hier nicht endlich zu ende bringe.

Ich möchte Einfach nur das die Daten in einer Homogenen Zeichencodierung (am besten UTF-8) bestehen.

Danke für Eure Zeit und Mühe!

Gelöst (PHP)
Irgendwie… ernüchternd das ich es genau dann selber löse, nach so vielen anläufen, wenn ich mit dem Problem zu euch komme.

Die umwandlung hat nicht geklappt weil die XML daten als ISO-8859-1 in die Datenbank gelanden sind. Das kann man locker umgehen indem man diese reihenfolge einhält:

PHP:

  • DomDocument->load(„datei.xml“)

  • DomDocument->encoding= „UTF-8“

  • simpleXML simplexml_import_dom(DomDocument)

der letzt Schritt ist nur nötig wenn man sich das auslesen vereinfachen möchte. Ich hatte das encoding des objekt immer vor dem einlesen gestellt und dachte es würde so beibehalten.

Zum testen empfehle ich ebenfalls die Attribute

  • DomDocument->actualEncoding

  • DomDocument->xmlEncoding

Habe ich Heute mal vor und nach dem einlesen der Datei ausgeben lassen… und da viel es mir wie Schuppen von den Augen.

Somit wäre mein Post auch eher im PHP Forum angesiedelt.
Hoffe ich konnte jemand anderen jetzt helfen. Wenn nicht jetzt dann vll. ja irgendwann.

Danke trotzdem an jene die drüber geschaut hatten.