Martin Wodrich ([EMAIL PROTECTED]) wrote:
> Hans-Juergen Taenzer <[EMAIL PROTECTED]> schrieb am
> 21.09.06 um 19:34:
>> bei einer base64-kodierten Pseudo-Multipart Nachricht mit Charset
>> gb2312 schneidet FreeXP im Lister die Nachricht ab.
> Kann ich mit deinem Puffer nachvollziehen.
Voraussetzung für das Fehlverhalten ist:
if (fname='') and (typ='text') and (subtyp<>'html')
Da fname bei dieser Art von Nachrichten in der Regel gegeben ist, tritt
der Fehler selten in Erscheinung. Ich habe in meinem Nachrichtenbestand
auch nur wenige Fälle gefunden.
>> Ich häng' die Nachricht uue-encoded mal an (BASE64_2.ZER).
>> Zusätzlich auch die dekodierte Nachricht (K4514.TMP) und die
>> Nachricht, wie sie korrekt dekodiert als utf-8 aussehen müsste
>> (K2209.TMP).
UTF-8 oben im Beispielpuffer war natürlich Blödsinn, aber auf den
Zeichensatz kommt es bei dem Fehler nicht an.
Eine Quick- and Dirty Korrektur (die bei mir soweit funktioniert) in
procedure ExtractMultiPart
ist:
<--------------- alt ------------------------------------>
if (p>0) or (length(s1)=255) then { Daten schreiben }
begin
CharsetToIBM(charset,s1);
<--------------- neu ------------------------------------>
if (p>0) or (length(s1)=255) or
{ HJT 01.10.06 Rest der letzten }
((lines=i) and (s1<>'')) { eingelesen Zeile ausgeben }
then { Daten schreiben }
begin
CharsetToIBM(charset,s1);
<-------------------------------------------------------->
Sorry, ich kann's mangels aktueller CVS-Version nicht ausdiffen.
> Und was muß ich da sehen:
> Abgeschnitten wurde die letzte nach dem Decodieren nicht
> abgeschlossene Zeile.
Ja, das ist der Fehler. Die letzte eingelesene base64-Zeile wird nicht
(komplett) ausgegeben (wobei das ausgangsseitig durchaus mehrere Zeilen
sein können). Oder meinst Du etwas anderes?
Hans-Jürgen
------------------------------------------------------------------------
FreeXP Support-Mailingliste
[email protected]
http://www.freexp.de/cgi-bin/mailman/listinfo/support-list