[php]XML,Umlaute und eine gesuchte Lösung

BartTheDevil89

Devilution Media
ID: 87739
L
2 Mai 2006
3.960
103
Hallo,

ich habe ein Problem mit Umlauten und einer XML.

Die XML enthält beispielsweise den Text "löjö"...allerdings nach dem auslesen und dem eintragen in die DB, findet sich dort nurnoch der Text "löjö"...also er hat Probleme mit der Codierung.

Die XML hat die Codierung "iso-8859-1".

Die XML kann ich allerdings auch nicht umstellen, also es müsste irgendwie so ne Lösung gefunden werden, dass die ausgelesenen Daten eben geändert werden und richtig in die DB gespeichert werden. ;)

Habt ihr ne Idee, wie das am besten läuft? :roll:

Danke
 
Mein Auto funktioniert nicht mehr, irgendwie macht der Motor nen bisschen Lärm, was könnte das Problem sein und was kann ich machen ohne den Wagen in die Werkstatt zu geben?

Du fragst hier so oft nach Problemlösungen, und hast bis heute nicht begriffen wie das funktioniert? :roll:

Stimmt die Codierung nach dem Auslesen? Stimmt die Codierung nach dem Eintragen in die Db? Stimmt die Codierung vllt erst nach dem Auslesen nicht mehr?
Wie ist das Zeichen in der XML-Datei codiert? Wie sieht die XML aus?
 
Mein Auto funktioniert nicht mehr, irgendwie macht der Motor nen bisschen Lärm, was könnte das Problem sein und was kann ich machen ohne den Wagen in die Werkstatt zu geben?

Du fragst hier so oft nach Problemlösungen, und hast bis heute nicht begriffen wie das funktioniert? :roll:

Stimmt die Codierung nach dem Auslesen? Stimmt die Codierung nach dem Eintragen in die Db? Stimmt die Codierung vllt erst nach dem Auslesen nicht mehr?
Wie ist das Zeichen in der XML-Datei codiert? Wie sieht die XML aus?

Hi,

tut mir leid, dachte ich hätte es besser formuliert. Aber gut:

1. Die XML schaut so aus beispielsweise:

PHP:
<?xml version="1.0" encoding="iso-8859-1" ?> 
<root>
<links> 
  <infos>löjö</infos>
</links> 
</root>

Es geht darum links->infos in einer DB zu speichern.

2. XML auslesen
das auslesen läuft ohne Problem

3. in DB speichern
direkt nach dem auslesen wird es sofort in die DB eintragen.

4. phpmyadmin: hier ist die Codierung falsch

Das ist also das System, wie es funktioniert.

Das Problem mit dem Umlauten kommt allerdings bereits direkt nach dem auslesen der XML, was ich über ne Testausgabe bevor das eingetragen wird, hab ausgeben lassen.
 
Hab ja die XML mal angefügt...
Das bringt wohl herzlich wenig :LOL:
wie müsste sie denn sein, dass die Codierung passt?
Die Codierung beim Abspeichern muss dieselbe sein, wie die Codierung beim Ausgeben. Das is das ganze Geheimnis.

Stimmen die beiden Codierung nicht überein, musst du vorher konvertieren. Ebenso kannst du dir die Konvertierung sparen, wenn du beim Abspeichern gleich so abspeichert, wie du später wieder ausgeben willst.
 
Das bringt wohl herzlich wenig :LOL:
Die Codierung beim Abspeichern muss dieselbe sein, wie die Codierung beim Ausgeben. Das is das ganze Geheimnis.

Stimmen die beiden Codierung nicht überein, musst du vorher konvertieren. Ebenso kannst du dir die Konvertierung sparen, wenn du beim Abspeichern gleich so abspeichert, wie du später wieder ausgeben willst.


Hi,

tut mir Leid, dass ich mich jetzt erst melde. Aber war etwas stressig die letzten Tage.

Aber die Codierungen sind die gleichen. Die XML wird auf der gleichen Seite erstellt, wie sie später auch eingelesen wird. Beides die selbe Codierung.
 
tut mir Leid, dass ich mich jetzt erst melde. Aber war etwas stressig die letzten Tage.
Ein Forum is kein Chat, wo du innerhalb von 5 Minuten wieder antworten musst ;)
Aber die Codierungen sind die gleichen. Die XML wird auf der gleichen Seite erstellt, wie sie später auch eingelesen wird. Beides die selbe Codierung.
Aber du siehst doch, dass das 'ö' mit zwei Bytes ausgegeben wird. Und das sind genau die zwei Bytes, die der UTF-8-Codierung von 'ö' in ISO-8859-1 entsprechen, ergo speicherst du in UTF-8 ab und versuchst in ISO-8859-1 auszugeben.

Hau mal testweise utf8_decode vor die Ausgabe und du siehst, dass das 'ö' normal ausgegeben wird. Ist dem wirklich so, so stimmen obige Ausführungen von mir und du musst dich entscheiden, ob du entweder ISO-8859-1 abspeichern willst oder UTF-8 ausgeben willst. Eine Konvertierung ist dann erforderlich.
 
Interessant wäre auch zu wissen, wie du das XML-File ausliest?

Vllt irgendeine Bibiliothek die nur UTF-8 unterstützt ?
 
Hi,

also hab den Fehler jetzt lang vor mir hergeschoben, aber muss das irgendwie hinbekommen. Hab hier jetzt nochmal zusammengefasst:

1. Hier wird die XML erstellt und die Daten gesammelt:

PHP:
function createxml($kat) {
header("Content-type: text/html; charset=iso-8859-1");
...XML wird zusammengesetzt
}

2. die XML schaut so aus:

PHP:
<?xml version="1.0" encoding="iso-8859-1" ?>  
<root> 
<links>  
  <infos>löjö</infos> 
</links>  
</root>

3. XML auslesen und in die DB eintragen:

PHP:
function xml_read($kat){ 
header("Content-type: text/html; charset=iso-8859-1");
...hier wird die XML mit Hilfe von simple_xml ausgelesen und in die DB gespeichert
}

Aber wo kann da das Problem mit den Umlauten herkommen?

Danke
 
Aber wo kann da das Problem mit den Umlauten herkommen?
Die Frage is schon in Postings #4 und #6 beantwortet. Es steckt nicht mehr dahinter und ne andere Antwort als in #6 kann man auch nicht geben.

Eine Sache vielleicht, wo du xml_read() postst: Du weißt schon, dass eine header()-Anweisung hier völlig fehl am Platz is, wenn du nur die DB ansprichst? :roll:
 
Die Frage is schon in Postings #4 und #6 beantwortet. Es steckt nicht mehr dahinter und ne andere Antwort als in #6 kann man auch nicht geben.

Eine Sache vielleicht, wo du xml_read() postst: Du weißt schon, dass eine header()-Anweisung hier völlig fehl am Platz is, wenn du nur die DB ansprichst? :roll:

Hi,

ja gut und ich bin jetzt auf der Suche danach wie ich den Fehler lösen kann. Und genau deswegen versteh ich es ja nicht. Denn der Content-Typ ist ISO, wenn die Datei erstellt wird und der Content-Typ is in der XML und beim auslesen auch wieder ISO. An welcher Stelle vermutest du den Fehler?
 
Die XML ist definitiv UTF-8 (Beweis in Post #9).

Ja gut, aber wo liegt denn dann der Fehler? Denn es passiert doch nix, außer dem auslesen der Daten aus der DB und die dann in eine Datei speichern, wie die xml-Datei ergibt. Wo kann denn da das Problem liegen? Bzw. wie würdest du es denn machen, dass die XML richtig ist?