PHP PHP x XML Umlaute darstellen..

mydoys.de

Well-known member
ID: 84968
L
20 April 2006
2.749
125
Guten Abend,

Ich habe folgendes Problem..
Ich habe Adressdaten in einer MYSQL Datenbank bsp.:
Schlehenstraße 2, 01169 Dresden, Germany

Diese lese ich aus und erstelle damit eine XML Datei für mein Kartenmaterial XML kommt mit den Umlauten Ä Ü Ö ß nicht klar, wie kann ich diese jetzt umwandel das er mir diese richtig anzeigt ?

Ich habe es mit urlencode,urldecode,htmlspecialchars,htmlentities versucht ohne erfolg ..
ebenfalls, utf8_decode und utf8_encode


Derzeit :

PHP:
$VARIABLE_ADRESS=urlencode($row[address]);
gibt mir :
Schlehenstra%DFe+2%2C+01169+Dresden%2C+Germany
macht auf der Karte komische zeichen "�"

Was muss ich tun damit die Umlaute in XML Funktionieren und auf meiner Karte richtig dargestellt werden ?




Ich hoffe man kann verstehen was ich will ...



Edit:
Ich habe mir jetzt einen Umwandler gemacht :

Code:
function umlaute($string)
function umlaute($string)
{
$search = array("Ä", "Ö", "Ü", "ä", "ö", "ü", "ß", "´");
$replace = array("&#.196;", "&#.214;", "&#.220;", "&#.228;", "&#.246;", "&#.252;", "ss", "");
return str_replace($search, $replace, $string);
}
(Der Punkt nach der Raute ist für das Forum gedacht, weil er das sonst nicht richtig darstellt )


Klappt zwar jetzt mit der XML aber auf der Karte sind jetzt die zeichen "ü" zusehen --:ugly::ugly::ugly::ugly:
 
Zuletzt bearbeitet:
Hier mal mein Code :


PHP:
<?php
include_once '../../dbconnect.php';

error_reporting(E_ALL);
header("Content-type: text/xml; charset=utf-8");



ini_set('default_charset', 'UTF-8');
ini_set('exif.encode_unicode', 'UTF-8');


$xml = new SimpleXMLElement("<?xml version=\"1.0\" encoding=\"UTF-8\"?><markers />");

$sql = "SELECT * FROM `DATENBANK_ZEUGS_2`ORDER BY `gym_id` DESC";
		$result = $con->query($sql);
			while($row = $result->fetch_assoc()) {
				if ($result->num_rows > 0) {



    $child = $xml->addChild('marker');
	$child->addAttribute('id', $row['gym_id']);
		$child->addAttribute('name', $row['name']);
				$child->addAttribute('iv', "(IV:N/A)");
				$child->addAttribute('gdata', "https://ADRESSE-KEINE-WERBUNG.TDL/maps.php?kor=$row[latitude],$row[longitude]");
			$child->addAttribute('address',$row['address']);
				$child->addAttribute('lat', $row['latitude']);
					$child->addAttribute('lng', $row['longitude']);
						$child->addAttribute('type', "Arena");



}	else	{echo"Fehler.";}


				}


$XML_AUSGABE= $xml->asXML();
echo "$XML_AUSGABE";




?>


Zeigt :

This page contains the following errors:
error on line 8 at column 1: AttValue: ' expected
Below is a rendering of the page up to the first error.


Quelltext:

PHP:
<?xml version="1.0" encoding="ISO-8859-1"?>
<markers><marker id="999999912" name="T

In der Datenbank steht unter namen "
Türornament Winzer
"


Es liegt an den Umlauten ... denn sobald ich das Ü in der Datenbank ersetze mit ue klappt es ...









____
EDIT


Habe jetzt den code geändert mit :

PHP:
$VARIABLE_N=(htmlentities(utf8_encode($row['name'])));
$VARIABLE_A=(htmlentities(utf8_encode($row['address'])));

XML Datei wird richtig erstellt, aber dafür werden jetzt die Zeichen die es Umwandelt natürlich auch umgewandelt auf meiner Karte dargestellt

Screen_p.png
 
Zuletzt bearbeitet:
Welchen Header hat den die XML Datei nun?
Code:
[COLOR=#000000][COLOR=#0000BB]<?xml version[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#DD0000]"1.0" [/COLOR][COLOR=#0000BB]encoding[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#DD0000]"ISO-8859-1"[/COLOR][COLOR=#0000BB]?>[/COLOR][/COLOR]
oder
Code:
[COLOR=#000000][COLOR=#DD0000]<?xml version="1.0" encoding="UTF-8"?>[/COLOR][/COLOR]
Welches collate haben die Spalten in der Datenbank?

XML Datei wird richtig erstellt, aber dafür werden jetzt die Zeichen die es Umwandelt natürlich auch umgewandelt auf meiner Karte dargestellt
Dann lass halt das htmlentities weg.