AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Prism Deppenfrage: Wie sieht UTF-8 aus?
Thema durchsuchen
Ansicht
Themen-Optionen

Deppenfrage: Wie sieht UTF-8 aus?

Ein Thema von alzaimar · begonnen am 2. Okt 2007 · letzter Beitrag vom 2. Okt 2007
Antwort Antwort
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#1

Re: Deppenfrage: Wie sieht UTF-8 aus?

  Alt 2. Okt 2007, 13:03
Hechel... Ihr seit Klasse, Jungs, aber ich will seit 10 Minuten ne Antwort posten und komm nicht dazu...

Wenn ich den Beispielcode ausführe (mit dem Umlaute-XML im CONST, also eigentlich *kein* UTF-8 ), dann liest LoadXMLData die Umlaute trotzdem ein, obwohl Umlaute ja eigentlich nach UTF-8 kodiert sein müssten. Na gut, mir egal, geht ja so. Aber jetzt:

Speichere ich das Objekt mit SaveToXML(MyString) wieder ab, sieht das Ganze so aus:
XML-Code:
<?xml version="1.0" encoding="utf-8"?>
<Object xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Test>äöü</Test>
</Object>
Um das nun wieder per LoadXMLData einzulesen, muss Ich das(den? die?) BOM vorne abschnippeln und (und das kapier ich einfach nicht) den String per UTF8Decode erstmal dekodieren.

So, und das erklär mir mal einer, denn wozu steht denn im XML 'encoding="utf-8"' drin, wenn ich das sowieso per Hand vorher durchführen muss? Dann kann ich das &/$%&-encoding doch gleich weglassen...

Ich dachte, ich kann sowas machen:

Delphi-Quellcode:
x := LoadXMLData (MyXMLString);
x.SaveToXML (sAnotherString);
x1 := LoadXMLData (sAnotherString);
// x und x1 sollen exakt die gleichen Daten enthalten. Stimmt nur nicht.
Mathematisch gesehen, sollte 'SaveToXML' die Umkehrfunktion von 'LoadXMLData' sein.
Das klappt nur nicht, sondern erst, wenn ich mir einen abbreche:
Delphi-Quellcode:
x := LoadXMLData (MyXMLString);
x.SaveToXML (sAnotherString);
// Dekodieren
sAnotherString := UTF8Decode(sAnotherString);
// BOM wegschnippeln
while sAnotherString[1]<>'<do
  sAnotherString:= copy(sAnotherString, 2, maxint);
x1 := LoadXMLData (sAnotherString);
// x und x1 enthalten exakt die gleichen Daten
Hab ich nun den Denkfehler, oder ist da was faul im Staate Dot.Net /XML ?

Ich hab in meinem jungendlichen Leichtsinn echt gedacht, das XML das alles für mich regelt...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort


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 aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz