php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 31.12.2007, 12:33  
Neuer Benutzer
 
Registriert seit: 23.01.2007
Beiträge: 7
betterknower
Standard XML parsen und Umlaute

Hallo,

habe ein Problem beim Parsen von XML-Files mit Umlauten und einer Character-Callback-Funktion. Habe bereits diverse Encodings ausprobiert, doch das Problem scheint ganz wo anders zu liegen.
Meine XML-Datei sieht so aus:
Code:
<?xml version="1.0"?>
<element_xy>
	Blöde Umlaute
</element_xy>
Wenn ich nun so parse
PHP-Code:
$xml_parser xml_parser_create();
xml_set_element_handler($xml_parser"startElement""endElement");
xml_set_character_data_handler($xml_parser"characterData");
$GLOBALS['vals'] = array();
xml_parse($xml_parserimplode(''file('./test.xml')));
xml_parser_free($xml_parser);
var_dump($GLOBALS['vals']);

function 
characterData($parser$data)
{
  
$GLOBALS['vals'][] = $data;
}

function 
startElement($parser$name$attrs)
{
}

function 
endElement($parser$name)
{

...kommt folgendes heraus:
Code:
array(2) {
  [0]=>
  string(4) "
	Bl"
  [1]=>
  string(13) "öde Umlaute
"
}
... also Bl von Blöde geht verloren.
Wenn ich im Characterhandler jedoch $data direkt ausgebe, ist das Bl vorhanden.
PHP-Code:
function characterData($parser$data)
{
  echo 
$data;

Ausgabe:
Code:
Blöde Umlaute
Wo ist das Problem? (PHP-Version 5.2.3)
betterknower ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 31.12.2007, 13:23  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo betterknower,

in der Regel sollte das funktionieren. Ich tippe eher auf ein Darstellungsproblem deines Browsers. Sende vor dem echo mal ein

PHP-Code:
<?php
header
('Content-Type: text/html; charset=UTF-8'); 
?>
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 31.12.2007, 13:26  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard Re: XML parsen und Umlaute

Zitat:
Zitat von betterknower
Habe bereits diverse Encodings ausprobiert
Welche, wo?
Zergling-new ist offline  
Alt 31.12.2007, 14:02  
Neuer Benutzer
 
Registriert seit: 23.01.2007
Beiträge: 7
betterknower
Standard Re: XML parsen und Umlaute

Zitat:
Zitat von Zergling
Zitat:
Zitat von betterknower
Habe bereits diverse Encodings ausprobiert
Welche, wo?
Naja, einmal direkt im xml Tag (ISO-8859-1 und UTF-8). Und auch Erzeugen des Parsers (xml_parser_create). Mit utf8_decode bekomme ich bei direkte Ausgabe über echo die korrekten Umlate angezeigt.
Ich bin nur sehr erstaunt, dass unabhängig vom En/Decodieren beim Aufbau des globalen Arrays einfach alle Zeichen vor dem Umlaut geschlabbert werden.
betterknower ist offline  
Alt 31.12.2007, 17:27  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Dann liegts vielleicht wirklich an der Ausgabe
siehe Posting @dr.e.
Zergling-new ist offline  
Alt 31.12.2007, 18:08  
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse:
Fortgeschritten
brian johnson befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Zergling
Dann liegts vielleicht wirklich an der Ausgabe
siehe Posting @dr.e.
glaube ich nicht, da er schreibt, dass er eine korrekte ausgabe bekommt, wenn ers durch utf8_decode jagt.

ich habe noch nie mit dem XML parser gearbeitet, doch habe ich das hier schon öfters gesehen:

PHP-Code:
xml_parser_set_option($parser,XML_OPTION_TARGET_ENCODING,'UTF8'); 
ansonsten würde ich SimpleXML vorschlagen, da hatte ich noch nie probleme mit dem encoding, denn der erkennt diese, anahand des angegeben encodings im XML, selbst.

Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
gruß
__________________
PHP4?!?>>>Aktuelle PHP Version: 5.2.11 || 5.3.0
Suse 11.2 *vorfreude*
brian johnson ist offline  
Alt 31.12.2007, 18:35  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Zitat von php Manual Comment
It does not say in the docs, but SimpleXML will convert all text into UTF-8, if the source XML declaration has another encoding. Eg, if the source has the following XML decl:

<?xml version="1.0" encoding="windows-1251" ?>

all the text in the resulting SimpleXMLElement will be in UTF-8 automatically.
nikosch ist offline  
 


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
Umlaute und MySQL4.1 Datenbanken 2 15.11.2009 15:28
Umlaute in Datenbank Eldra PHP Tipps 2008 3 14.05.2008 07:11
UTF8 Dump erzeugt nach import in UTF8 kod DB falsche Umlaute Carino Datenbanken 18 07.05.2007 23:49
HTML-Ausgabe mit php Umlaute imagica PHP Tipps 2006 3 21.08.2006 12:42
geht das mit parsen?? Dopedouglaz PHP Tipps 2006 6 22.05.2006 14:13
Umlaute bei Linux flual2000 PHP Tipps 2006 10 28.04.2006 13:12
Umlaute in Texte ersetzen! wiegia086 PHP Tipps 2006 2 20.04.2006 08:58
[Erledigt] Keine Umlaute beim MediaWiki im Internet Explorer PHP Tipps 2006 1 15.02.2006 18:50
Umlaute... JK PHP-Fortgeschrittene 7 07.12.2005 20:55
text parsen mit php - tutorial gesucht PHP Tipps 2005-2 2 05.10.2005 11:44
Umlaute in Dateien per CLI in HTML-Entities umwandeln PHP-Fortgeschrittene 5 19.07.2005 09:06
Umlaute automatisch ersetzen PHP Tipps 2005 5 31.03.2005 17:34
[Erledigt] Umlaute werden falsch maskiert PHP Tipps 2004-2 4 11.11.2004 13:19
[RegEx] Datum/Uhrzeit parsen PHP-Fortgeschrittene 3 08.11.2004 08:58
Eingegebenen Namen auch auf Umlaute prüfen PHP Tipps 2004 3 23.09.2004 19:27

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
xml umlaute, umlaute xml, php xml umlaute, umlaute in xml, php xml parser umlaute, xml umlaute php, php umlaute xml, xml parser umlaute, xml umlaut, umlaute xml php, xml umlaute encoding, http://www.php.de/php-tipps-2008/45287-xml-parsen-und-umlaute.html, xml und umlaute, xml parser sonderzeichen, php xml_parser_create umlaute, umlaut in xml, xml_parser umlaute, xml_set_character_data_handler umlaute, xmlparser php umlaute, xml_parse umlaute

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:13 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.