Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 393 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

zhaang

Doppel-As

Dabei seit: 19.11.2010

Beiträge: 141

 

1 Zum Seitenanfang

Dienstag, 15. März 2011, 16:39

Problem mit XML und Umlauten

Hey Leute

Ich habe irgendwie ein Problem mit Umlauten, wenn ich sie in eine XML speichere.

Jedesmal wenn ich einen Umlaut wie z.B.: "ö" "Ö" "ü" "Ü" "ä" "Ä"
in meine XML Speichere, dann zerschießt der mir die gesamte XML.

Wie Codiere ich die XML, dass der das mal sein lässt und die brav speichert?

Ich codiere die im Moment mit "utf-8", habe aber schon eine andere Codierung (ISO-8859-1) durchprobiert und s auch uncodiert gelassen, brachte aber nichts...
Ich dachte das würde alles abdecken.....

Sorry, wenn das ne dumme Frage ist, ich hab mir Programmierung eigentlich nur für meine Website selbst beigebracht.

Wo könnte nun mein Fehler liegen?

Der Code (mit den Umlauten) wird mit einer einfachen Form mittels PHP in die XML gespeichert.
 

Dabei seit: 31.01.2010

Beiträge: 930

 

2 Zum Seitenanfang

Dienstag, 15. März 2011, 17:44

Wenn du UTF-8 im Header angibst, hast du sie auch als UTF-8 abgespeichert? ;)
UbuntuSource - Aktuelle News und Howto's rund um Ubuntu!
 

ospx

Kaiser

Dabei seit: 11.11.2006

Beiträge: 1 131

 

3 Zum Seitenanfang

Dienstag, 15. März 2011, 20:43

vielleicht mit cdata-sections ?
Und in Tags würde ich solche Umlaute sowieso nicht verwenden.
 

zhaang

Doppel-As

Dabei seit: 19.11.2010

Beiträge: 141

 

4 Zum Seitenanfang

Dienstag, 15. März 2011, 22:43

also bevor ich die speichere setze ich die mit $variable = utf8_encode($variable);
in utf-8 code.

Allerdings speichert das dann anstelle eines "ö" ein komisches "Ä" mit krams...... also n anderes sonderzeichen.
 

DarkiceX

Mitglied

Dabei seit: 17.02.2011

Beiträge: 32

 

5 Zum Seitenanfang

Mittwoch, 16. März 2011, 15:26

Für Umlaute gibt es in HTML auch spezielle Zeichen:

HTML

1
ä ä   Ä Ä   ö ö   Ö Ö   ü ü   Ü Ü   ß ß
 

lorenz

Haudegen

Dabei seit: 05.11.2002

Beiträge: 647

 

6 Zum Seitenanfang

Mittwoch, 16. März 2011, 15:55

Für Umlaute gibt es in HTML auch spezielle Zeichen:

HTML

1
ä ä   Ä Ä   ö ö   Ö Ö   ü ü   Ü Ü   ß ß


das es hier um XML geht ist dir klar ?;>

@zhaang

wie genau speicherst du denn die daten ab also als was nodeValues attributes ?? nen teil des Codes wäre halt gut und was du mit "zerschießt" meinst also was beim auslesen passiert ?;>

mfg LA
 

zhaang

Doppel-As

Dabei seit: 19.11.2010

Beiträge: 141

 

7 Zum Seitenanfang

Mittwoch, 16. März 2011, 17:21

Hey Lorenz

Das "Zerschießen" passiert leider nicht beim auslesen , sondern beim speichern.

Im Prinzip wird der gesammte Dateiinhalt gelöscht, sobald ich da einen Umlaut reinspeichere.
Oder mit der Methode des "Variable vorher als UTF-8 encoden" wird das falsche Sonderzeichen gespeichert.

Hier der Schnipsel , den ich zum speichern verwende, nachdem ich die Datei geladen habe:


Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// access and remove child element
		$item = $root->getElementsByTagName($tag)->item(0);
		$root->removeChild($item);
						
		//create child element
		$item = $dom->createElement($tag);
		$root->appendChild($item);
											
		// create text node
		$text = $dom->createTextNode($tagcontent);
		$item->appendChild($text);

                // save tree to file
	        $test = $dom->save($path);
 

lorenz

Haudegen

Dabei seit: 05.11.2002

Beiträge: 647

 

8 Zum Seitenanfang

Mittwoch, 16. März 2011, 18:41

mh aus dem stück code kann ich nicht so wirklich viel sehen

wie zb der parser aufgerufen wurde und in wie weit du das encoding auf utf8 eingestellt hast ;)
möglich ist auch das php Probleme hast wen BOM nicht das ist

ich weiß ja auch nicht in wie weit du Erfahrung mit xml hast ich kann dir wärmstens SimpleXML ans Herz legen das ist wesentlich leichter zu handhaben ;)

http://php.net/manual/en/book.simplexml.php

mfg LA
 

zhaang

Doppel-As

Dabei seit: 19.11.2010

Beiträge: 141

 

9 Zum Seitenanfang

Mittwoch, 16. März 2011, 22:41

UTF-8 habe ich in dem XML Document das ich lade angegeben.
Ungefähr so:
<?xml version="1.0" encoding="UTF-8"?>

Und der Code kommt vom einer Form.
Mach ich dann nicht das hier: $variable = utf8_encode($variable);
dann zerschießt das mir alles, mache ich das, dann bekomme ich die falschen Sonderzeichen gespeichert.

So speichere ich(ungefähr):


Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$dom = new DomDocument;
$dom->Load($path);
											
$root = $dom->getElementsByTagName("profil")->item(0);
$dom->formatOutput=true;

// access and remove child element
$item = $root->getElementsByTagName($tag)->item(0);
$root->removeChild($item);
						
//create child element
$item = $dom->createElement($tag);
$root->appendChild($item);
											
// create text node
$text = $dom->createTextNode($tagcontent);
$item->appendChild($text);

// save tree to file
$test = $dom->save($path);



Würde das Problem durch Umstellung auf Simple-XML gelöst werden, würde ich es eventuell machen, allerdings gibts keinen Grund dafür, warum das dann da funktionieren sollte.
Ausserdem müsste das ja auch so möglich sein.

Zitat

möglich ist auch das php Probleme hast wen BOM nicht das ist


Ich weiß nicht was dieser Satz aussagen soll.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »zhaang« (16. März 2011, 22:41)

 

lorenz

Haudegen

Dabei seit: 05.11.2002

Beiträge: 647

 

10 Zum Seitenanfang

Mittwoch, 16. März 2011, 22:58

also an deinem script kann ich so kein Fehler erkennen an dem es liegen könnte sind denn die beiden Dateien also deine php Datei und deine xml-Datei auch mit utf-8 Encoding gespeichert ?

LA
 

Matt

Foren Gott

Dabei seit: 17.09.2002

Beiträge: 5 573

 

11 Zum Seitenanfang

Mittwoch, 16. März 2011, 23:07


Für Umlaute gibt es in HTML auch spezielle Zeichen:

HTML

1
ä &auml;   Ä &Auml;   ö &ouml;   Ö &Ouml;   ü &uuml;   Ü &Uuml;   ß &szlig;


das es hier um XML geht ist dir klar ?;>

Macht nichts, funktioniert trotzdem einwandfrei wenn nur die Inhalte so umgewandelt werden. Nutze ich manchmal auch so wenn Webservices fragwürdig umgesetzt wurden.
nyuuu
 

lorenz

Haudegen

Dabei seit: 05.11.2002

Beiträge: 647

 

12 Zum Seitenanfang

Mittwoch, 16. März 2011, 23:16

Macht nichts, funktioniert trotzdem einwandfrei wenn nur die Inhalte so umgewandelt werden. Nutze ich manchmal auch so wenn Webservices fragwürdig umgesetzt wurden.


ju klar kann man das machen nur ist das eher eine Richtung die man nicht gehen sollte wenn man nicht gerad vielleicht in Zeitdruck steckt oder an dem Projekt schon an irgend einer anderen Stelle gefuscht wurde das es nicht anders geht.
 

zhaang

Doppel-As

Dabei seit: 19.11.2010

Beiträge: 141

 

13 Zum Seitenanfang

Mittwoch, 16. März 2011, 23:22

Bei PHP habe ich nichts angegeben, was dann doch dachte ich automatisch "UTF-8" wäre?!?
Oder wie meinst du das mit "PHP in UTF-8 gespeichert?

Bei XML habe ich sicherheitshalber wie schon geschrieben UTF-8 encoded, obwohl das da eigentlich ja ohne Angabe schon UTF-8 sein müsste....

Ich habe an den Anfang der PHP Dateien folgendes gesetzt:
header("Content-Type: text/html; charset=utf-8");

Dann müsste der ganze Kram doch theoretisch UTF-8 sein, oder?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »zhaang« (16. März 2011, 23:30)

 

lorenz

Haudegen

Dabei seit: 05.11.2002

Beiträge: 647

 

14 Zum Seitenanfang

Mittwoch, 16. März 2011, 23:28

in deinem Editor ob da auch beides auf utf-8 eingestellt ist ich sehe da wie gesagt keinen fehler habs eben sogar selber mal bei mir hier getestet

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$path "ttr.xml";
$tag "ttr";
$tagcontent "ä ö ü i ";
$dom = new DomDocument;
$dom->Load($path);
$root $dom->getElementsByTagName("profil")->item(0);
$dom->formatOutput=true;
// access and remove child element
$item $root->getElementsByTagName($tag)->item(0);
$root->removeChild($item);
//create child element
$item $dom->createElement($tag);
$root->appendChild($item);
// create text node
$text $dom->createTextNode($tagcontent);
$item->appendChild($text);
// save tree to file
$test $dom->save($path);
?>


ttr.xml

Quellcode

1
2
3
4
<?xml version="1.0" encoding="UTF-8"?>
<root>
<profil><ttr>test</ttr></profil>
</root>

=>

Quellcode

1
2
3
4
<?xml version="1.0" encoding="UTF-8"?>
<root>
<profil><ttr>ä ö ü i </ttr></profil>
</root>
 

zhaang

Doppel-As

Dabei seit: 19.11.2010

Beiträge: 141

 

15 Zum Seitenanfang

Mittwoch, 16. März 2011, 23:31

wie stelle ich das denn auf utf-8 ein?

Mir gehen langsam die Ideen aus.

OMG

Ich hab den Fehler endlich gefunden!!!!

Das ganze ist ein Teil von meinem Geocoding und speichert quasi eine Adresse und ich hatte jedesmal voll Probleme wenn "Köln" oder "Mönchengladbach" als Adresse gespeichert wurden.

Das war schon alles richtig codiert, aber ich schleife das immer wegen dem Geocoding durch eine komplett andere Datei durch, die ich total vergessen hatte, das die in dem Kreislauf mit drin ist (zwecks geocoding) und übergebe in dieser Datei auch eigentlich nur die Werte 1:1.

Aber diese Datei war noch auf Unfug codiert, keine Ahnung warum.

Danke auf jedenfall für die Hilfe und das checken des Codes.
Hat mir auf jeden Fall geholfen, dass ich die ganzen genannten Fehler ausschließen konnte.
 

lorenz

Haudegen

Dabei seit: 05.11.2002

Beiträge: 647

 

16 Zum Seitenanfang

Mittwoch, 16. März 2011, 23:44

in deinem editor wo das genau ist kann ich natürlich nicht sagen musst du mal nach encoding oder vielleicht auch utf8 in der hilfe suchen ;)

aber mich wundert halt auch das php dir kein fehler ausgibt normal sollte er wenn die datei falsch codiert ist nen fehler ausgeben . kannst du mal einfach nur den code den ich oben gepostet habe testen und noch in der ersten zeile hinter <?php

Quellcode

1
error_reporting(2147483647);


einfügen?

und sagen was für ein fehler kommt bzw was passiert

mfg LA
 

fast-beat

Grünschnabel

Dabei seit: 25.03.2011

Beiträge: 9

 

17 Zum Seitenanfang

Freitag, 25. März 2011, 18:54

wenn ich zb. auf ö drücke kommen bei mir automatisch diese html Codes... welche programme benutzt ihr den so ?