Von XML nach PHP nach MySQL
Luciffer
- xml
Guten Morgen!
Ich habe hier ein kleines Script für das Spiel World of Warcraft.
Es liest die Daten die ich brauche aus einer XML Datei aus.
Soweit mag dies ja alles richtig sein.
So wenn ich nun die Seite aufrufe und vorher die Variable
$name
mit nem echo versehen habe sind alle Umlaute richtig.
So wenn ich diese nun in eine Datenbank schreibe sind alle umlaute falsch.
Wenn ich die Daten mit PHP wieder aufrufe sind die Daten aber richtig.
Also Umlaute und alles ist richtig-
Wie mache ich es das in der DB auch die Umlaute drinnen sind?
Danke im Voraus
Luciffer
Wie mache ich es das in der DB auch die Umlaute drinnen sind?
Zeichenkodierung richtig einstellen.
Ok das mag sein aber welche^^ und eines noch.... Die XML is je nach anfrage Deutsch oder englisch.
Wie mache ich es das die Deutsch ist?
ini_set('accept_Language' "de_de")
geht nich. kA ob der jetzt zu 100% richtig war hab den asud dem kopf heraus geschrieben.
Danke nochma
Ich eigentlich die Zeichenkodierung der MySQL Tabelle gemeint.
Welche du allerdings einstellen musst, kann ich dir nicht sagen. Das musst du selber herausfinden.
echo $begrüßung;
Beachte bitte, dass bei der Verarbeitung von Daten jeglicher Art
a) jedes System einzeln und
b) jede Kommunikation zwischen zwei Systemen
getrennt zu betrachten ist. Bei Textdaten ist es wichtig, die Systeme und die Schnittstellen zwischen ihnen im Hinblick auf Zeichenkodierungen zu betrachten. Wie geht das System mit Daten in bestimmten Kodierungen um? Welche Kodierung ist auf der Schnittstelle zu verwenden? Müssen Konvertierungen stattfinden? Muss die Kodierung zwischen zwei Systemen ausgehandelt oder deklariert werden, und wenn ja, wie muss das erfolgen?
Umkodierungen sind am besten zu vermeiden, weil nicht in jede Richtung verlustfrei umkodiert werden kann.
Ich habe hier ein kleines Script für das Spiel World of Warcraft.
Es liest die Daten die ich brauche aus einer XML Datei aus.
Die meisten XML-verarbeitenden Systeme und Programmteile liefern die Daten in UTF-8. Mitunter selbst dann, wenn sie in der Datei in einer anderen Kodierung drinstehen und korrekt ausgezeichnet sind.
Soweit mag dies ja alles richtig sein.
So wenn ich nun die Seite aufrufe und vorher die Variable $name mit nem echo versehen habe sind alle Umlaute richtig.
Da geht es schon los. System A gibt die Daten an System B zur Ausgabe. Um ein "richtig" zu bestätigen, reicht nicht nur der Augenschein, denn trotz richtiger Anzeige können in der Verarbeitungskette Fehler sein, die sich erst unter bestimmten Umständen zeigen (nicht-alltägliche Zeichen, die man nicht berücksichtigt hat). Kannst du die obigen Fragen beantworten und dein "richtig" auch als hinter den Kulissen richtig bestätigen?
So wenn ich diese nun in eine Datenbank schreibe sind alle umlaute falsch.
Die nächste Schnittstelle. Eigentlich sind es zwei, denn du schaust ja nicht direkt in die Datenbank sondern verwendest wieder ein System mit einer Schnittstelle zwischen ihm und dem DBMS. Wenn das Betrachtungsprogramm phpMyAdmin ist, dann hat das seine Hausaufgaben bezüglich der obigen Fragen gemacht. Nur kann es nichts dafür, wenn jemand anderes Fehler in seiner Verarbeitungskette hat.
Wenn ich die Daten mit PHP wieder aufrufe sind die Daten aber richtig.
Also Umlaute und alles ist richtig-
Mitunter kehrt sich ein Fehler auf dem Rückweg wieder um. Vermutlich auch hier.
Angenommen, du sendest UTF-8-Daten, deklarierst sie aber nicht korrekt, so dass sie aufgrund der Defaulteinstellung als Latin1 angesehen werden, so bekommst du sie zwar auch wieder als Latin1 zurück, interpretierst sie jedoch als UTF-8. Soweit so gut, denn bei diesem Vorgang trat kein Verlust auf. Aber innerhalb des DBMS liegen sie falsch deklariert rum, so dass jemand mit richtiger ausgehandelter Schnittstellenkodierung sie zwar gemäß dieser Aushandlung korrekt kodiert bekommt, sie aber nicht richtig weiterverarbeiten kann, weil sie von vorn herein nur falsch abgelegt werden konnten.
Wie mache ich es das in der DB auch die Umlaute drinnen sind?
Beantworte dir die obigen Fragen für all deine Systeme und Schnittstellen. Wenn sich dabei neue stellen, versuche sie mit der Systemdokumentation zu klären oder befrage eine Suchmaschine und/oder das Archiv (oder stell sie hier).
echo "$verabschiedung $name";