vcard Format für Notizen / ENCODING=QUOTED-PRINTABLE

  • Hallo Gemeinde,

    ich suche eine Funktion, mit der ich einen Memo Text für eine VCard formatieren kann.
    Diesen muss man dazu nach "QUOTED-PRINTABLE" umwandeln.

    Habe die Funktion hier gesehen, aber die ist zum decoden.

    Als Beispiel mal der Originaltext:
    Anmerkungen, also Fliesstext mit äüöÄÜÖ und ß und $&
    Hier die zweite Zeile

    Hier die dritte Zeile

    Und hier das Ergebnis:
    NOTE;CHARSET=utf-8;ENCODING=QUOTED-PRINTABLE:Anmerkungen,=20also=20Fliesst=
    ext=20mit=20=C3=A4=C3=BC=C3=B6=C3=84=C3=9C=C3=96=20und=20=C3=9F=20und=20$&=
    =0D=0AHier=20die=20zweite=20Zeile=0D=0AHier=20die=20dritte=20Zeile

    Anscheinend wird auch immer nach 75 Zeichen umgebrochen, mit dem hinteren "=".

    Hat jemand von Euch die Idee, wie man die Sache encoden kann, also von einem normalen String in das besagte Format?

    Schönen Sonntag noch,

    Sputnik089

  • Spoiler anzeigen
    [autoit]

    $Text = "Anmerkungen, also Fliesstext mit äüöÄÜÖ und ß und $&" & @CRLF & "Hier die zweite Zeile" & @CRLF & @CRLF & "Hier die dritte Zeile"
    $s = VCard_Encode($Text)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $s = ' & $s & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    Func VCard_Encode($txt, $output = "NOTE;CHARSET=utf-8;ENCODING=QUOTED-PRINTABLE:")
    Local $tmp, $Split, $Outputtxt
    $tmp = StringReplace($txt, " ", "=20")
    $tmp = StringReplace($tmp, @CRLF, "=0D=0A")
    For $i = 128 To 255
    $tmp = StringReplace($tmp, Chr($i), "=" & Hex($i, 2), 0 ,1)
    Next
    $tmp = $output & $tmp
    $Split = StringSplit($tmp, "")
    $Outputtxt = ""
    For $i = 1 To $Split[0]
    If IsInt($i / 75) Then $Outputtxt &= "=" & @CRLF
    $Outputtxt &= $Split[$i]
    Next
    Return $Outputtxt
    EndFunc ;==>VCard_Encode

    [/autoit]

    In deinem Ergebnis sind mehr Zeichen drin als in deinem Text:

    Spoiler anzeigen
    [autoit]

    $t = "=20=C3=A4=C3=BC=C3=B6=C3=84=C3=9C=C3=96"
    $Split = Stringsplit($t, "=")
    $txt = ""
    For $I = 1 To $Split[0]
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : Chr(dec($Split[$i])) = ' & Chr(dec($Split[$i])) & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    Next

    [/autoit]