IPB

Willkommen, Gast ( Anmelden | Registrierung )

2 Seiten V   1 2 >  
Reply to this topicStart new topic
> PHP5 und XML, Umlautproblem
Andreas
Beitrag 16.03.2005 - 12:05
Beitrag #1


____________________
Gruppensymbol

Gruppe: Admin
Beiträge: 1.220
Mitglied seit: 20.10.2001
Mitglieds-Nr.: 3



Hi,

ich mache gerade ein paar "Fingerübungen", weil ich für meine Seite die Erstellung von Übersichten und Listen automatisieren möchte.

Dazu will ich per PHP5 eine XML Datei auslesen. Das ist ja angenehmerweise recht einfach => Demoseite Die XML-Datei findet sich unter http://www.andreas-edler.de/netz_html/filmfacts.xml

Der Code sieht folgendermaßen aus:
HTML
<?php

if
(file_exists('filmfacts.xml')) {
$xml = simplexml_load_file('filmfacts.xml');
// var_dump($xml);

} else {
exit('Kann filmfacts.xml nicht oeffnen.');
}

$x=0;

foreach ($xml->kritiken as $movie) {
foreach ($movie->kritik as $film) {
$x++;
echo 'Nr. '.$x.' = '.$film->titel, ' = ';
echo $film->wertung, '<br />';
}
}

?>


Leider werden dabei die Umlaute völlig zerschossen ausgegeben :-/ Wenn ich in der XML Datei die Umschreibungen nutze, meckert das Script über nicht definierte Entities ...

:-o

Andreas
Go to the top of the page
 
+Quote Post
harlequin
Beitrag 16.03.2005 - 12:16
Beitrag #2


DELETE FROM users WHERE search_count < 1
Gruppensymbol

Gruppe: Admin
Beiträge: 314
Mitglied seit: 15.07.1976
Wohnort: Osnabrück
Mitglieds-Nr.: 2



moin!

Wenn du die Zeichenkodierung im Browser auf UTF-8 umstellst wird alles gut... smile.gif

have fun!
Lars

PS: Gut, wie du das in Header Informationen bekommst weisst du denke ich.... wink.gif
Go to the top of the page
 
+Quote Post
i.b.g
Beitrag 16.03.2005 - 13:11
Beitrag #3


Weiss zuviel!!
Gruppensymbol

Gruppe: Mods
Beiträge: 668
Mitglied seit: 19.04.2002
Wohnort: Grimmen
Mitglieds-Nr.: 385



Hallo,

ZITAT(harlequin @ 16.03.2005 - 12:16)
Wenn du die Zeichenkodierung im Browser auf UTF-8 umstellst wird alles gut... smile.gif
*
Warum das? Bei mir sind die Umlaute zu sehen wenn ich iso-8859-1 einstelle.

Richtig ist, dass es besser ist einen ordentlichen Header mitzugeben.
Go to the top of the page
 
+Quote Post
harlequin
Beitrag 16.03.2005 - 13:14
Beitrag #4


DELETE FROM users WHERE search_count < 1
Gruppensymbol

Gruppe: Admin
Beiträge: 314
Mitglied seit: 15.07.1976
Wohnort: Osnabrück
Mitglieds-Nr.: 2



ZITAT(i.b.g @ 16.03.2005 - 13:11)
Hallo,

Richtig ist, dass es besser ist einen ordentlichen Header mitzugeben.
*


moin!

War ein Schnellschuss, hatte nur das probiert... smile.gif
Hatte ein ähnliches Problem bei nem CMS, was ich geschrieben hab. Deutsch/Englisch/Japanisch... Da ging ich gleich auf UTF-8 und alles war schön... wink.gif

have fun!
Lars
Go to the top of the page
 
+Quote Post
Andreas
Beitrag 16.03.2005 - 13:20
Beitrag #5


____________________
Gruppensymbol

Gruppe: Admin
Beiträge: 1.220
Mitglied seit: 20.10.2001
Mitglieds-Nr.: 3



Yo, richtig verpackt ist das noch nicht blush.gif Ich dachte der IE mit seiner Fehlertoleranz würde das auch so anzeigen. <bastelbastel> Mit kompletten Headerangaben rundherum - sei es ISO oder UTF-8 - sieht das Ergebnis allerdings nicht anders aus :-(

*Wo* sollte ich das denn einstellen?

Andreas - gerade nicht vom Schlauch kommend
Go to the top of the page
 
+Quote Post
harlequin
Beitrag 16.03.2005 - 13:26
Beitrag #6


DELETE FROM users WHERE search_count < 1
Gruppensymbol

Gruppe: Admin
Beiträge: 314
Mitglied seit: 15.07.1976
Wohnort: Osnabrück
Mitglieds-Nr.: 2



moin!

ZITAT(Andreas @ 16.03.2005 - 13:20)
Yo, richtig verpackt ist das noch nicht  blush.gif Ich dachte der IE mit seiner Fehlertoleranz würde das auch so anzeigen. <bastelbastel> Mit kompletten Headerangaben rundherum - sei es ISO oder UTF-8 - sieht das Ergebnis allerdings nicht anders aus :-(

*Wo* sollte ich das denn einstellen?

Andreas - gerade nicht vom Schlauch kommend
*


Öhm, also der Quelltext sieht bei mir immer noch gleich aus.... blink.gif
Umschalten im IE: Ansicht->Codierung->Unicode

und die Header Klamotte mein ich:
QUELLTEXT
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


Hilft das beim 'vom Schlauch runterkommen'? Ansonsten muss jemand anderes schubsen... wink.gif lurker.gif

have fun!
Lars
Go to the top of the page
 
+Quote Post
Andreas
Beitrag 16.03.2005 - 13:34
Beitrag #7


____________________
Gruppensymbol

Gruppe: Admin
Beiträge: 1.220
Mitglied seit: 20.10.2001
Mitglieds-Nr.: 3



Ja, so habe ich's ja auch gemacht *g* Nur nicht hochgeladen ... ich kann ja auch lokal testen wink.gif Habe hier nur "WebFTP" ... macht nicht soviel Spaß.

Sehr putzig das. Wenn ich bei der Version ohne Header im Browser auf UTF-8 stelle, funktioniert es. Wenn ich im Header UTF-8 mitgebe geht's nicht - auch nicht, wenn ich die Codierung im Browser selbst weiterhin auf UTF-8 stehen habe.

Verwirrt.

Ich will aber nicht "ae" "ue" und so verwenden ... Oder muß ich das in der XML Datei einstellen? Hm ...
Go to the top of the page
 
+Quote Post
harlequin
Beitrag 16.03.2005 - 14:22
Beitrag #8


DELETE FROM users WHERE search_count < 1
Gruppensymbol

Gruppe: Admin
Beiträge: 314
Mitglied seit: 15.07.1976
Wohnort: Osnabrück
Mitglieds-Nr.: 2



moin!
ZITAT(Andreas @ 16.03.2005 - 13:34)
Ja, so habe ich's ja auch gemacht *g* Nur nicht hochgeladen ... ich kann ja auch lokal testen wink.gif Habe hier nur "WebFTP" ... macht nicht soviel Spaß.

Sehr putzig das. Wenn ich bei der Version ohne Header im Browser auf UTF-8 stelle, funktioniert es. Wenn ich im Header UTF-8 mitgebe geht's nicht - auch nicht, wenn ich die Codierung im Browser selbst weiterhin auf UTF-8 stehen habe.

Verwirrt.

Ich will aber nicht "ae" "ue" und so verwenden ... Oder muß ich das in der XML Datei einstellen? Hm ...
*


Mhm... ich würde es später nochmal 'online' probieren... Es macht manchmal tatsächlich für nen Browser einen Unterschied (was ich auch erfahren durfte). Webserver spielen zum Teil auch mit den Encodings rum... *schulterzuck*
Ansonsten hast du doch in deiner XML Datei das Encoding schon passig gesetzt... *wunder* Wenn alle Stricke reissen kannst du ja mit Gewalt zu Werke gehen
QUELLTEXT
$string = str_replace('ä','&auml;',$string);
*grummel* So auf die ganz blöde Tour halt.... smile.gif

have fun!
Lars
Go to the top of the page
 
+Quote Post
i.b.g
Beitrag 16.03.2005 - 15:25
Beitrag #9


Weiss zuviel!!
Gruppensymbol

Gruppe: Mods
Beiträge: 668
Mitglied seit: 19.04.2002
Wohnort: Grimmen
Mitglieds-Nr.: 385



Hallo,

also eigentlich wird das im Header der XML-Datei angegeben.
QUELLTEXT
<?xml version="1.0" encoding="ISO-8859-1"?>
Und dann sollte der Browser oder das jeweilige Anwenderprogramm wissen, was damit anzufangen.
Go to the top of the page
 
+Quote Post
Andreas
Beitrag 18.03.2005 - 10:27
Beitrag #10


____________________
Gruppensymbol

Gruppe: Admin
Beiträge: 1.220
Mitglied seit: 20.10.2001
Mitglieds-Nr.: 3



Es scheint so, dass das mit den Umlauten tatsächlich nicht mit den Headern in den Griff zu bekommen ist. Nach ein bißchen googlen habe ich jetzt folgende funktionierende Lösung:
HTML
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>XML Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>
<body>

<?php

if
(file_exists('filmfacts.xml')) {
$xml = simplexml_load_file('filmfacts.xml');
} else {
exit('Failed to open filmfacts.xml.');
}

$x=0;

foreach ($xml->kritiken as $movie) {
foreach ($movie->kritik as $film) {
$x++;
$liste[$x][titel]=utf8_decode($film->titel);
$liste[$x][wertung]=utf8_decode($film->wertung);
echo 'Nr. '.$x.' = '.$liste[$x][titel].' = ';
echo $liste[$x][wertung].'<br />';
}
}

?>

</body>
</html>


Grüße

Andreas

[Nachtrag]: Bißchen erweitert: http://filmfacts.drfm.de/netz_html/index.php
Nun kann ich anfangen zu basteln ...
Go to the top of the page
 
+Quote Post
Google Bot
Beitrag
Beitrag #


Google Ads









Go to the top of the page
 
Quote Post

2 Seiten V   1 2 >
Reply to this topicStart new topic
1 Besucher lesen dieses Thema (Gäste: 1 | Anonyme Besucher: 0)
0 Mitglieder:

 



RSS Vereinfachte Darstellung Aktuelles Datum: 23.04.2024 - 12:47

taschenkalender
expertise-panel IPS Driver Error

IPS Driver Error

There appears to be an error with the database.
You can try to refresh the page by clicking here