php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 10.08.2005, 10:14  
Erfahrener Benutzer
 
Registriert seit: 14.07.2005
Beiträge: 157
DonTermi
Standard XML Datei mit PHP Parsen - Problem mit Zeichencodierung

Hallo,

da ich erst kürzlich zu XML gefunden habe in PHP bin ich über ein großes Problem gestoßen:

Als erster habe ich mir eine kleine XML Parser Klasse geschrieben die soweit ganz funktioniert. Dabei werden ausgewählte Elemente in ein Array geschrieben. Klappt soweit. Jetzt komme ich aber zur größten Hürde: Habe riesige Probleme mit der Zeichencodieren.

Hier mal n Auszug aus meiner XML:
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<freeware>
  <software>
        <beschreibung>Testtext mit Umlauten wie ö,ä,ü. Klappt nicht.</beschreibung>
  </software>
</freeware>
Aus diesem Text wird bei der Ausgabe:
Code:
ö,ä,ü. Klappt nicht.
Selbst mit encoding="UTF-8" und die Datei als UTF-8 Format kommt genau das selbe raus. Bei längeren Texten kommen nur teilweise die Zeichen als UTF-8 Format und der Rest fehlt einfach.
__________________
[visit Donvelopment.org]
PGP-KeyID: 0xBEC31126]
[Blog:Don's Blog]
DonTermi ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 10.08.2005, 10:21  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

schickst du bei der ausgabe auch einen passenden header an den browser ? dass er weis dass UTF-8 kommt ? bzw eben ISO ?
-> header checken !

abgesehen davon ohne code wird man dir hier schwer helfen können.
robo47 ist offline   Mit Zitat antworten
Alt 10.08.2005, 10:47  
Erfahrener Benutzer
 
Registriert seit: 14.07.2005
Beiträge: 157
DonTermi
Standard more Input :)

Also kurz dazu:
Code:
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
Aber habe gerade das Problem gefunden. Die content-Ausgabe vom HTML ist ja nicht so schlimm wenn das nicht stimmt. Es fehlt ja einfach nur Text bei der Ausgabe.

Code:
			$this->PARSER = xml_parser_create();

			xml_set_object($this->PARSER, $this);
			xml_set_element_handler($this->PARSER, "startElement", "endElement");
			xml_set_character_data_handler($this->PARSER, "dataElement");

			foreach($this->FILE as $ELEMENT)
			{
				xml_parse($this->PARSER, $ELEMENT);
			}

			xml_parser_free($this->PARSER);
Mein Problem war nur die dataElement Funktion. Ich habe erst jetzt mitbekommen das er mehrmals bei einem längeren Content in diese Funktion springt.

Problem daher:
Code:
Function dataElement($PARSER, $ELEMENT_CONTENT)
{
   $this->DATA[$this->INDEX][$this->NAME] = trim($ELEMENT_CONTENT);
}
Lösung:
Code:
$this->DATA[$this->INDEX][$this->NAME].= trim($ELEMENT_CONTENT);

Nachtrag:
Die Ausgabe funktioniert jetzt. Es wird der gesamte Inhalt des Elements angezeigt. Aber wieso gibt er den XML Content immer noch als UTF-8 aus obwohl im XML encoding ISO-8559-1 gesetzt ist und das Format der XML (ANSI Windows) ist?
__________________
[visit Donvelopment.org]
PGP-KeyID: 0xBEC31126]
[Blog:Don's Blog]
DonTermi ist offline   Mit Zitat antworten
Alt 10.08.2005, 10:53  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

nur mal nebenbei
Code:
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
is weitesgehend veraltet, weil das die meisten browser nicht mehr interessiert, es geht darum was für ein header der webserver sendet!

ein wget -dv deineurl
in der linuxshell sollte dir aufschluss darüber geben, oder halt selbst den header senden und dementsprechend deine ausgabe als utf-8 ausgeben

mfg
robo47
robo47 ist offline   Mit Zitat antworten
Alt 10.08.2005, 11:16  
Erfahrener Benutzer
 
Registriert seit: 14.07.2005
Beiträge: 157
DonTermi
Standard

Also meine Webseite mit der XML Ausgabe ist definitiv encoding iso-8859-1. Mozilla bestätigt mir dies in der Seiteneigenschaft.

Code:
type text/html
encoding ISO-8859-1
Trotzdem beantwortet mir das noch nicht meine Frage warum der Content meiner XML Datei als UTF-8 ausgegeben wird

Feststellung: Habe eben mal den Kram von meinem Lokalen Webserver (zum arbeiten) auf mein Hosting hochgeladen. Da wird der XML Content als ISo-8859-1 ausgegeben.
(www.donvelopment.org/beta/ siehe Freeware)

Jetzt wirds verhext... Wo muß ich da bei mir lokal was confen das es auch so ausgegeben wird? (Benutze Apache 2.0.54 mit PHP 5.0.4 - Windows)

In meine Header Datei habe ich sogar noch zusätzlich angefügt
Code:
Header("Content-Type: text/html; charset=ISO-8859-1");
Header("Content-Language: de");
Also muß die Sache woanders liegen (an PHP selbst) das mein XML Content als UTF-8 wiedergegeben wird. Könnte mir da jetzt gut vorstellen das PHP meinen XML Content automatisch in UTF-8 encodiert.
__________________
[visit Donvelopment.org]
PGP-KeyID: 0xBEC31126]
[Blog:Don's Blog]
DonTermi ist offline   Mit Zitat antworten
Alt 10.08.2005, 11:24  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

http://www.php.net/manual/de/ref.xml.php
[/quote]
PHP's XML extension supports the Unicode character set through different character encodings. There are two types of character encodings, source encoding and target encoding. PHP's internal representation of the document is always encoded with UTF-8.

Source encoding is done when an XML document is parsed. Upon creating an XML parser, a source encoding can be specified (this encoding can not be changed later in the XML parser's lifetime). The supported source encodings are ISO-8859-1, US-ASCII and UTF-8. The former two are single-byte encodings, which means that each character is represented by a single byte. UTF-8 can encode characters composed by a variable number of bits (up to 21) in one to four bytes. The default source encoding used by PHP is ISO-8859-1.
[/quote]´

hmm notfalls mal
www.php.net/utf_decode und
www.php.net/utf_encode anschauen
damit soltlest du es zumindest umwandeln können.
robo47 ist offline   Mit Zitat antworten
Alt 10.08.2005, 11:25  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

aaha grad gefunden:

http://www.php.net/xml_parser_create


Zitat:
The optional encoding specifies the character encoding for the input/output in PHP 4. Starting from PHP 5, the input encoding is automatically detected, so that the encoding parameter specifies only the output encoding. In PHP 4, the default output encoding is the same as the input charset. If empty string is passed, the parser attempts to identify which encoding the document is encoded in by looking at the heading 3 or 4 bytes. In PHP 5.0.0 and 5.0.1, the default output charset is ISO-8859-1, while in PHP 5.0.2 and upper is UTF-8. The supported encodings are ISO-8859-1, UTF-8 and US-ASCII.
robo47 ist offline   Mit Zitat antworten
Alt 10.08.2005, 11:36  
Erfahrener Benutzer
 
Registriert seit: 14.07.2005
Beiträge: 157
DonTermi
Standard

"Wer lesen kann ist klar im Vorteil"

Sollte wohl doch immer mal die kompletten Optionen der Funktion anschauen


Danke Dir. Klappt super. Wieder was gelernt
__________________
[visit Donvelopment.org]
PGP-KeyID: 0xBEC31126]
[Blog:Don's Blog]
DonTermi ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Upload Problem einer ZIP Datei sven2oo8 PHP-Fortgeschrittene 4 23.07.2008 23:54
Datei auslese Problem Gokel PHP Tipps 2008 10 11.07.2008 15:52
datei upload problem thecracked PHP Tipps 2008 5 11.07.2008 06:23
Funktionen aus externer Datei includen - Problem Darson PHP Tipps 2008 7 18.01.2008 16:27
Problem mit einer auslesen.php datei my_self PHP Tipps 2008 3 02.11.2007 00:09
Großer Baum -> Große Datei -> Hohe Ladezeit :( PsychoEagle PHP Tipps 2008 7 22.09.2007 12:44
Komisches problem mit Datei Berechtigungen stuvomatic PHP Tipps 2006 5 28.05.2006 01:49
[HELP] Problem mit dem Parsen von Homepage Seiten PHP-Fortgeschrittene 3 10.10.2005 18:58
Problem beim Schreiben in eine Datei PHP-Fortgeschrittene 2 17.08.2005 16:26
[TEMPLATEENGINE] Problem mit dem Parsen von Arrays imported_Ben PHP-Fortgeschrittene 5 30.07.2005 11:07
sehr merkwürdiges Problem mit require_once PHP Tipps 2005-2 3 16.07.2005 13:42
Datei auslesen ergibt ein Problem Fraylman PHP Tipps 2004-2 4 22.12.2004 10:12
[Erledigt] Problem mit Datei Upload Server, Hosting und Workstations 6 06.09.2004 04:58
Problem beim schreiben in Datei PHP Tipps 2004 5 20.08.2004 14:06
[Erledigt] altes neues problem von datei upload!!! PHP Tipps 2004 3 28.06.2004 19:06

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
http://www.php.de/php-fortgeschrittene/28852-xml-datei-mit-php-parsen-problem-mit-zeichencodierung.html, zend xml parser, zend framework xml parser, xml ausgabe ü, iso-8559-1 xml, sonderzeichen php xml codieren, php xml codierung problem, php xml parser zeichensatz, kleiner xml parser php, zeichenkodierung xml, xml encoding ü, php xml parser umlaute, xml parser sonderzeichen, xml datei sonderzeichen, linux shell parse xml file, php xmldatei erstellen probleme mit sonderzeichen, xml parser encoding &, 㼠xml, xml encoding ansi, php dateiupload parsing sonderzeichen

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:08 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.