@mjustin: Leider darf ich, z.Zt. zumindest, die
Indy-Version nicht austauschen...
Das mit dem
quoted-printable ist es. Guter Hinweis, Danke himitsu.
Komisch aber, da dieses in
Indy 9.x bereits implementiert ist.
Mittlerweile habe ich genau den Teil mal von Hand "quick'n dirty" programmiert:
Delphi-Quellcode:
function ConvertUTF8( AText :
String ) :
String;
var i,nUTF8Code : Integer;
sCode :
String;
sUTF8,wsUTF8Char : WideString;
begin
Result := '
';
sUTF8 := '
';
i := 1;
while i <= length(AText)
do
begin
//Sonderzeichen werden mit einem "=" gequoted
if AText[i] = '
='
then
begin
if i+2 <= length(AText)
then
begin
sCode := Copy(AText,i+1,2);
//IsHexable prüft nur, ob es gültige HEX-Zeichen 'a'..'z','A'..'Z','0'..'9' sind
if IsHexable(sCode)
then
begin
nUTF8Code := StrToInt('
$'+sCode);
wsUTF8Char := chr(nUTF8Code);
sUTF8 := sUTF8 + wsUTF8Char;
end;
end;
Inc(i,3);
end
else begin
sUTF8 := sUTF8 + AText[i];
Inc( i );
end;
end;
//UTF8ToWideString aus dem Jedi-Paket
Result := UTF8ToWideString(sUTF8);
end;
Ist wirklich quick und wirklich dirty - aber für den ersten Test hat's gereicht.
Ich werd' mal sehen, warum die
Indy-
POP3-Komponente das nicht von sich aus macht... (lasse den Thread also noch offen)