Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi HTML? decodieren (https://www.delphipraxis.net/26328-html-decodieren.html)

hitzi 22. Jul 2004 08:14


HTML? decodieren
 
Hallo,

ich bekomme von einem Obex Server eine XML Datei zurück geliefert. In dieser steht zum Beispiel auch der Eintrag "Töne". Leider wird mir 'T' + #$C3#$B6 + 'ne' zurückgeliefert. Erkennt jemand nach welchen Schema das codiert ist?
Für das Zeichen 'ö' werden die beiden Hexcodes C3 und B6 verwendet.

MfG Hitzi

Phoenix 22. Jul 2004 08:21

Re: HTML? decodieren
 
Meines wissens ist das Unicode, da hier ein Zeichen 2 Bytes belegt.

hitzi 22. Jul 2004 08:28

Re: HTML? decodieren
 
Und wie wird ein Unicodezeichen in ein "normales" Zeichen umgewandelt?

Habe bisher noch nichts mit Unicodezeichen gemacht :?

MfG Hitzi

Steve 22. Jul 2004 08:32

Re: HTML? decodieren
 
UTF-8
UTF-8 Encoding & Decoding
:)

Gruß
Stephan

edit: Kompo

sakura 22. Jul 2004 08:37

Re: HTML? decodieren
 
Hier mal eine Quick&Dirty Routine für UTF-8 nach WideString.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Res: array[0..1024] of WideChar;
  S: AnsiString;
begin
  S := 'T' + #$C3#$B6 + 'ne';
  MultiByteToWideChar(CP_UTF8, 0, PChar(S), -1, @Res[0], SizeOf(Res));
  ShowMessage(Res);
end;
...:cat:...

Bernhard Geyer 22. Jul 2004 08:49

Re: HTML? decodieren
 
Falls es wirklich eine XML-Datei ist, so nimm doch einen Parser wie OpenXML. Handdecodierung bei XML-Datein ist m.E. nicht mehr angesagt.

hitzi 22. Jul 2004 09:07

Re: HTML? decodieren
 
Danke für eure Antworten.

Es ist wirklich eine XML Datei, aber mit so simplen Aufbau, dass der Overhead, welcher durch einen Parser entsteht, nicht gerechtfertigt ist.

Ich habe Sakuras Funktion wie folgt abgeändert. Irgendwelche Verbesserungen, Vorschläge dazu?

Delphi-Quellcode:
function AnsiToStr(s : AnsiString) : string;
var Res : array of WideChar;
    len, i : integer;
begin
  result := '';
  len := MultiByteToWideChar(CP_UTF8, 0, PChar(s), - 1, nil, 0);
  if len > 0 then begin
    setlength(Res, len);
    MultiByteToWideChar(CP_UTF8, 0, PChar(s), -1, @Res[0], SizeOf(Res));
    for i := 0 to SizeOf(Res) - 1 do result := result + res[i];
  end;
end;

MfG Hitzi

hitzi 22. Jul 2004 09:16

Re: HTML? decodieren
 
Hmm ... da ist noch ein Fehler in der Funktion.
Es werden immer nur vier Zeichen zurückgeliefert. :cry:

mirage228 22. Jul 2004 09:19

Re: HTML? decodieren
 
Hi,

gibt SizeOf(Res) den richtigen Wert zurück?

mfG
mirage228

hitzi 22. Jul 2004 09:24

Re: HTML? decodieren
 
Danke - das war der richtige Hinweis. Habe SizeOf() in Length() abgeändert und nun funktioniert es.

Mfg Hitzi


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 Uhr.
Seite 1 von 2  1 2      

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-2025 by Thomas Breitkreuz