Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Mal wieder Unicode (https://www.delphipraxis.net/190853-mal-wieder-unicode.html)

hoika 14. Nov 2016 14:49

Mal wieder Unicode
 
Hallo,
Outlook schickt mir u.a. folgenden Text als Lesebestätigung:

=?UTF-8?Q?Heiko_L=C3=BCttge?
Original Heiko Lüttge (klar ;) )

Wie bekomme ich den konvertiert?

Utf8Decode klappt nicht
Utf8ToAnsi klappt nicht

Union 14. Nov 2016 14:59

AW: Mal wieder Unicode
 
Das ist quoted base64 encoded (?UTF-8?Q?). Siehe z.b. RFC 1342 sowie die Indy-Klasse TIdEncoderQuotedPrintable.

hoika 14. Nov 2016 15:21

AW: Mal wieder Unicode
 
Hallo,
danke, bringt mich etwas weiter aber nicht viel ...

TIdEncoderQuotedPrintable.Decode sieht merkwürdig aus.
procedure TIdEncoderQuotedPrintable.Decode(ASrcStream: TStream; const ABytes: Integer = -1); override;

Wo ist der Zielparameter?

TIdDecoder soll man wohl auch nicht selbstständig benutzen.


Das Indy ist sowas von ;( Mensch, aber geht ja fast alles, aber halt dauert es oft etwas.

Der schöne Günther 14. Nov 2016 15:41

AW: Mal wieder Unicode
 
DecodeString(..) statt Decode(..) :warn:

Delphi-Quellcode:
program Project17;

{$APPTYPE CONSOLE}
{$R *.res}

uses System.SysUtils, IdGlobal, IdCoder, IdCoderQuotedPrintable;

const
   input = '=?UTF-8?Q?Heiko_L=C3=BCttge?';
var
   encoder:   TIdDecoder;
   encoding:   IIdTextEncoding;
begin
   encoding := IndyTextEncoding_UTF8();
   // oder encoding := IndyTextEncoding(TEncoding.UTF8);

   encoder := TIdDecoderQuotedPrintable.Create(nil);
   try
      Write(input);
      Write(' -> ');
      Write( encoder.DecodeString(input, encoding) );
   finally
      encoder.Destroy();
   end;
   readln;

end.
=>

Code:
=?UTF-8?Q?Heiko_L=C3=BCttge? -> ?UTF-8?Q?Heiko_Lüttge?

hoika 14. Nov 2016 15:53

AW: Mal wieder Unicode
 
Hallo,
danke,
ich bin doch schon weiter.
Die Quellen sind sehr aussagefähig, man muss sich nur durchhangeln ...

Nach dem Retreive kommt man per

Delphi-Quellcode:
AMsg: TIdMessage;

AMsg.FromList[0].Name
AMsg.FromList[0].Address
an die "entschlüsselten" Werte ran.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:46 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