| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Mar 2010
Beiträge: 48
| Lokale Datenbank auf utf8 umstellen?
Hallo, ich habe eine Anwendung geschrieben, welche mit zwei Datenbanken arbeitet: - Daten werden in einem XML-Schema mittels PHP & utf8_decode in eine Server-Datenbank geschrieben und von dieser auch wieder mittels PHP abgefragt .... resultierende Form: <contact>M. Müller</contact> ... Also alles in Ordnung ... spitze Klammern und auch Umlaute werden (sowohl in der Datenbank als auch nach Abfrage) korrekt dargestellt. Diesen XML-String speichere ich nun in die lokale Datenbank, welche ich direkt mit Air erzeugt habe (Spaltenformat: Text). Frage ich die Daten nun wieder ab (nicht mehr über PHP, sondern direkt über SQLConnection mit Air), so erhalte ich: <contact>M. Müller</contact> ... Die Umlaute sind also noch da, aber die öffnenden und schließenden spitzen Klammer werden nicht korrekt übermittelt. Dadurch schafft es das Programm dann natürlich auch nicht den String wieder in eine XML aufzulösen und es kommt zu Fehlern ... Nun meine Frage, kann ich irgendwie beim Anlegen der DB oder DB-Tabellen festlegen, dass auch bei der lokalen DB utf8 verwendet werden soll? Oder gibt es in Air eventuell einen analogen Befehl zum utf8_decode von PHP? Ich danke euch schon mal für eure Antworten, liebe Grüße! |
| | |
| | #2 (permalink) |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.162
|
Mit UTF-8 hat Dein Problem IMO nichts zutun, sonst würden nämlich in erster Linie die Umlaute dran glauben. In Deinem Fall werden jedoch "nur" die in XML reservierten Zeichen durch die zugehörigen Entities ersetzt. Da ich das genaues Script zum Speichern und Auslesen dieser Daten nicht kenne, kann ich nur vermuten, dass die Daten irgendwann in einem XML basierenden Container tranportiert werden und irgendeine Funktion den Text zum Schutz html-escaped. Loswerden könntest Du die Entities mit diesem Workaround: PHP-Code:
__________________ Viele Grüße // Martin Martin Kraft // Interaktionsdesign Hilfreiche Websites: // Hilfe zur Adobe Flash Plattform // ActionScript 2 Referenz // ActionScript 3 Referenz // ActionScript 3 Arbeitshandbuch // weitere Flash Ressourcen Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da! Geändert von Martin Kraft (06-03-2011 um 14:46 Uhr) |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Mar 2010
Beiträge: 48
| Danke!
Hallo und vielen Dank für den Tipp!!! Ich habe die Anweisungen nun eingebaut und alles funktioniert einwandfrei. Leider finde ich jedoch die Stelle nicht, in der die Zeichen gewandelt wurden (alle Forschungen landen letztlich wieder bei der lokalen Datenbank). Ich versuche mal den Workflow des Programmes kurz darzustellen, vielleicht hat ja Jemand eine Idee woran es liegen könnte. Also, in der Server-Datenbank gibt es eine Tabelle mit einer Spalte "data", in dieser werden über PHP (utf8_decode) die Daten in XML-Form gespeichert. Schaut man sich den DB-Eintrag an, so werden alle Zeichen korrekt dargestellt. Die Abfrage erfolgt ebenfalls über PHP, nur werden hier die abgefragten Inhalte in einem XML-Dokument gespeichert, etwa in der Art: $xml = new DOMDocument("1.0","utf-8"); ... $node = $xml->createElement("data", $daten->data); $item->appendChild($node); ... header('Content-type:text/xml'); echo $xml->saveXML(); Die so abgefragten Inhalte der Tabelle werden in der AIR-Anwendung als eine Variable vom Typ XML behandelt (loadedData:XML) und wie folgt verarbeitet/gespeichert: for each (serverItem in loadedData.item){ .... (SQL-Insert-Statement) .... sqlStmt.parameters[':data'] = serverItem.data.text(); sqlStmt.execute(); } Ein trace(serverItem.data.text()) an dieser Stelle ergibt noch eine Ausgabe in der gewünschten Form. Also obwohl die XML-Daten bei der PHP-Abfrage in einem weiteren XML-Dokument transportiert wurden, existieren hier noch die spitzen Klammern und sollten somit eigentlich auch in der lokalen DB gespeichert werden. Zur Abfrage aus der lokalen DB wird ein SQLStatement verwendet und das Resultat wird in einer ArrayCollection gespeichert (var results:ArrayCollection = new ArrayCollection(); results.source = result.data as Array ![]() Über results.source[0].data; wird nun im Weiteren auf die Daten zugegriffen um diese weiterzureichen und zu verarbeiten ... gibt man sie an dieser Stelle jedoch nochmals mittels trace aus, so wurden die spitzen Klammern ersetzt. An welcher Stelle könnte es denn zu dieser Konvertierung kommen und wie kann man das umgehen? Schon mal Danke für alle Hinweise und schönen Abend noch! |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Mar 2010
Beiträge: 48
|
Ich habe noch einmal nachgeforscht - der Fehler geschieht tatsächlich an der Stelle, an der ich mit PHP die Resultat-XML erzeuge, also bei folgendem Code: Die Abfrage erfolgt ebenfalls über PHP, nur werden hier die abgefragten Inhalte in einem XML-Dokument gespeichert, etwa in der Art: $xml = new DOMDocument("1.0","utf-8"); ... $node = $xml->createElement("data", $daten->data); $item->appendChild($node); ... header('Content-type:text/xml'); echo $xml->saveXML(); Das Attribut $data->data ist ebenfalls in XML-Struktur und alle XML-basierenden Zeichen werden gewandelt, sobald ich es als Node hinzufüge. Problem ist jedoch, dass die data-XML Usereingaben beinhaltet (Also unter Umständen auch & und < oder >). Aus diesem Grund sind alle Felder in dieser data-XML mit CData gekennzeichnet. Da jedoch alle spitzen Klammern gewandelt werden, wird auch das CData nicht mehr erkannt und ich bekomme ständig Fehler. Frage ist nun, ob es möglich ist eine XML in einer weiteren XML zu transportieren ohne das alle Zeichen gewandelt werden ... und wenn ja, wie ich das Wandeln umgehen kann ... Ich danke euch für eure Hinweise! |
| | |
| | #5 (permalink) |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.162
|
Es zwingt Dich ja nimand mit der DOMDocument-Klasse zu arbeiten. Bau das XML doch einfach so zusammen, wie Du mit PHP auch HTML ausgeben würdest: mit Strings und echo.
__________________ Viele Grüße // Martin Martin Kraft // Interaktionsdesign Hilfreiche Websites: // Hilfe zur Adobe Flash Plattform // ActionScript 2 Referenz // ActionScript 3 Referenz // ActionScript 3 Arbeitshandbuch // weitere Flash Ressourcen Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da! |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [Flash CS5] Formel umstellen | Mr.Sunburn | Flash Einsteiger | 2 | 16-09-2010 22:43 |
| as von mx auf 8 umstellen | fizzo | ActionScript 1 | 1 | 21-09-2006 10:52 |
| Datenbank für lokale Java Anwendung | poffi | Am Rande | 12 | 23-11-2005 19:29 |
| Lokale Datenbank ohne Server | chewyf5 | Flash und Datenbanken | 3 | 20-08-2004 10:22 |
| ...... umstellen | Cheech-Marvn | Am Rande | 16 | 18-11-2002 22:24 |