simplexml und Zeichensatzdifferenz UTF8 und ISO-8859-1

dwex

Erfahrenes Mitglied
Hallo Leute,

habe gerade ein Problem bei dem ich nicht weiterkomme.

Also ich habe eine XML-Datei:
Code:
<?xml version="1.0" encoding="ISO-8859-1" ?>
  <email>
     <absender_email>xxx@asdfjhaskghjaksghdasdgasdg.de</absender_email>
     <betreff>Ihr Gutschein</betreff>
     <inhalt>Sie haben einen Gutschein erhalten.

Mit diesem Gutschein können Sie Ihre Einkaufssumme um [GUTSCHEINWERT] Euro bei Ihrem nächsten Einkauf im Shop reduzieren.
Bitte verwenden Sie dazu den Gutscheincode [GUTSCHEINCODE] direkt im Shop.

Ihr
Online-Shop</inhalt>
  </email>
Diesen würde ich gerne auslesen. Dazu habe ich folgendes Script:
PHP:
if (file_exists('artikel.xml')) {
   $xml = simplexml_load_file('artikel.xml');

$inhalt = $xml->inhalt[0];
$inhalt = nl2br($inhalt);
echo $inhalt;

if($xml->titel[0]) {
	echo "gefunden";
}

} else {
   exit('Konnte Datei nicht laden.');
}

Jetzt bekomme ich aber bei den Umlauten komische Zeichen ausgegeben.
So gibt er mir z.B. für das ü die Zeichen ö aus.

Dann habe ich versucht $inhalt = $xml->inhalt[0]; durch $inhalt = htmlentities($xml->inhalt[0]); zu ersetzen - leider auch ohne Erfolg.

Dann habe ich das Script geändert (zur info: ich hatte vorher nur eine Textdatei eingelesen welche auch die Umlaute hatte und dort hat htmlentities funktioniert) nach folgendem Code:
PHP:
if (file_exists('artikel.xml')) {

   $datei = file_get_contents('artikel.xml');
   $datei = utf8_encode($datei);

   $xml = simplexml_load_string($datei);


    $inhalt = $xml->inhalt[0];
    $inhalt = nl2br($inhalt);
    echo $inhalt;

} else {
   exit('Konnte Datei nicht laden.');
}
Jedoch funktioniert das auch nicht.

Kann mir bitte mal jemand erklären was ich falsch mache?
Vielen Dank im voraus!
 
Zuletzt bearbeitet:
Tja manchmal bin ich eben mit Blödheit geschlagen. (Ich weis Selbsterkenntnis ist der erste Weg zur Besserung.)
Man(n) sollte vielleicht mal utf8_decode nehmen statt utf8_encode.
Wobei ich das ja für einen Bug in der Funktion simplexml_load_file halte, das diese alles in UTF8 zurückgibt obwohl im XML-File selbst steht das es anders ist. Sowas gehört doch dann in die Doku - oder?

Asche über mein Haupt. :-(

Der korrekte Quellcode falls jemand (unwarscheinlich aber möglich) genau so doof ist wie ich:
PHP:
if (file_exists('artikel.xml')) {
   $xml = simplexml_load_file('artikel.xml');

$inhalt = utf8_decode($xml->inhalt[0]);
$inhalt = nl2br($inhalt);
echo $inhalt;

if($xml->titel[0]) {
    echo "gefunden";
}

} else {
   exit('Konnte Datei nicht laden.');
}
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück