AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi HTTP Request String / Post Parameter / Unicode
Thema durchsuchen
Ansicht
Themen-Optionen

HTTP Request String / Post Parameter / Unicode

Ein Thema von Zerolith · begonnen am 28. Sep 2005 · letzter Beitrag vom 28. Sep 2005
Antwort Antwort
Zerolith

Registriert seit: 12. Mär 2003
Ort: Kempten
188 Beiträge
 
Delphi 6 Enterprise
 
#1

HTTP Request String / Post Parameter / Unicode

  Alt 28. Sep 2005, 15:43
Hallo,

ich arbeite z.Zt. an einem kleinen WebServer für eine Sendungsverfolgung alá UPS o.ä.
läuft schon alles super. Allerdings wenn ich z.B. von einer Textarea einen String schicke macht er mir rel. komische Sachen in den Parameter

siehe:
Code:
POST /sendmail.lks HTTP/1.1'#$D#$A'Host: 127.0.0.1'#$D#$A'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.10) Gecko/20050717 Firefox/1.0.6'#$D#$A'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'#$D#$A'Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3'#$D#$A'Accept-Encoding: gzip,deflate'#$D#$A'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7'#$D#$A'Keep-Alive: 300'#$D#$A'Connection: keep-alive'#$D#$A'Referer: http://127.0.0.1/contact.lks?order=050930001BE'#$D#$A'Cookie: ID=127.0.0.1: Mi, 28 Sep 2005 15:07:41'#$D#$A'Content-Type: application/x-www-form-urlencoded'#$D#$A'Content-Length: 359'#$D#$A#$D#$A'ordernr=050930001BE&myText=asdadsfdsfa%0D%0A%0D%0A%0D%0Adassdffds%0D%0A%0D%0A%0D%0A%0D%0A%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6%C3%B6
zu beachten ist die letzte Zeile (myText = (...) )
das rote ist zu beachten. Ich müsste das ganze irgendwie doch umgewandelt bekommen in einen vernünftigen String. Ebenfalls sollte das auch funktionieren wenn in der Textarea mit Unicode (UTF-8) z.B. Russisch oder Polnisch eingegeben wurde.

Müsste ich beim REquest String - Widestring verwenden? irgendwie umwandeln mit UTF8En / Decode?

bin für jede hilfe dankbar

Daniel
Daniel
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: HTTP Request String / Post Parameter / Unicode

  Alt 28. Sep 2005, 17:53
Es liegen 2 Kodierungen nacheinander vor.
Als erstes wird ein WideString (16bit pro Zeichen) mit UTF-8 codiert.
Das Ergebnis ist ein multibyte-String, der sich aber problemlos in einen AnsiString (8bit) darstellen lässt.

Nun wird dieser String "URLcodiert"; d.h. nichtdarstellbare Zeichen wie z.B. ?, %, / werden
durch %XX kodiert.

Und rückwärts geht's so:
Zuerst "URLdecodieren" und dann UTF-8 nach WideString.
Delphi-Quellcode:
// bei Benutzung von INDY
function URLEncode(Txt: AnsiString): AnsiString;
begin
  Result := TIdURI.ParamsEncode(Txt);
end;

function URLDecode(Txt: AnsiString): AnsiString;
begin
  Result := TIdURI.URLDecode(Txt);
end;
Delphi-Quellcode:
function StringToWideStringEx(const S: string; CodePage: Word): WideString;
var
  InputLength,
  OutputLength: Integer;
begin
  InputLength := Length(S);
  OutputLength := MultiByteToWideChar(CodePage, 0, PChar(S), InputLength, nil, 0);
  SetLength(Result, OutputLength);
  MultiByteToWideChar(CodePage, 0, PChar(S), InputLength, PWideChar(Result), OutputLength);
end;

function WideStringToStringEx(const WS: WideString; CodePage: Word): string;
var
  InputLength,
  OutputLength: Integer;
begin
  InputLength := Length(WS);
  OutputLength := WideCharToMultiByte(CodePage, 0, PWideChar(WS), InputLength, nil, 0, nil, nil);
  SetLength(Result, OutputLength);
  WideCharToMultiByte(CodePage, 0, PWideChar(WS), InputLength, PChar(Result), OutputLength, nil, nil);
end;


function UTF8ToWideString(const S: string): WideString;
begin
   Result := StringToWideStringEx(S, CP_UTF8);
end;

function WideStringToUTF8(const WS: WideString): string;
begin
   Result := WideStringToStringEx(WS, CP_UTF8);
end;
Andreas
  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:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz