Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi iso-8859-1 To String (https://www.delphipraxis.net/194763-iso-8859-1-string.html)

Hobbycoder 2. Jan 2018 17:06

iso-8859-1 To String
 
Hi,

wie wandele ich sodas:
Code:
=?iso-8859-1?B?cmv8YiBQbHVzIE5ld3NsZXR0ZXIgIC0gVGVzdHBoYXNlIHZlcmzkbmdlcnQ=?=
oder sowas
Code:
***SPAM*** =?iso-8859-1?Q?Angebot_Toner_Po=DF_B=FCrotechnik_?=
aber auch sowas
Code:
=?utf-8?Q?Lieferavis=20=20f=C3=BCr=20Lieferschein=2015607478=20vom?=
sinnvoll in einen vernünftig lesbaren String um? Gibt's das was bei den Indys?
Ich habe das nicht aus einer TMessage, sondern aus einer Textdatei. Es können auch noch andere Kodierungen vorkommen.

LTE5 2. Jan 2018 17:13

AW: iso-8859-1 To String
 
Was heißt für dich "vernünftig lesbar"?

himitsu 2. Jan 2018 17:14

AW: iso-8859-1 To String
 
Erstmal nach allen
Delphi-Quellcode:
=? ... ?=
im Text suchen, das dazwischen rauskopieren, bzw. den gesamten Text an diesen Grenzen auftrennen.

Das dazwischen an den ? splitten
1 Encoding
2 Quoting B oder Q ?
3 codierter Text

Bei Q vorher den Text dequoten
und dann MSDN-Library durchsuchenMultiByteToWideChar oder besser TEncoding.
Und natürlich brauchst du noch eine Übersetzungstabelle von Encoding-Bezeichner zu Codepage.
Anschließend das gefundene
Delphi-Quellcode:
=? ... ?=
im Gesamttext ersetzen, bzw. alles als Unicode neu zusammensetzen.

Für Dequoten und Bezeichner-zu-Codepage sollte sich in INDY irgendwo was finden lassen.

Hobbycoder 2. Jan 2018 17:39

AW: iso-8859-1 To String
 
Kannst du mir das noch ein wenig verdeutlichen?

Was bedeutet B oder Q? Bei B ist der ganze Text codiert und bei Q nur die Länderspeziefischen Zeichen?

Wenn ich unter TEncoding in der D-Hilfe schaue, dann sieht das so aus, als ob iso-8859-1 damit nicht ginge. Ist das richtig? Dann müsste ich ja im Grund immer MultiByteToWideChar nehmen, damit das einigermaßen universell funktioniert.

Hobbycoder 2. Jan 2018 17:40

AW: iso-8859-1 To String
 
Zitat:

Zitat von LTE5 (Beitrag 1390133)
Was heißt für dich "vernünftig lesbar"?

Hm..ist das nicht verständlich?

LTE5 2. Jan 2018 17:41

AW: iso-8859-1 To String
 
Zitat:

Dann müsste ich ja im Grund immer MultiByteToWideChar nehmen, damit das einigermaßen universell funktioniert.
Ich hatte mal ein ähnliches Problem. Ich bin auf UTF8 beim Lesen und Schreiben umgestiegen.
Wenn es selbst dann Probleme gibt, hat der Nutzer in den Daten rumgepfuscht oder die Daten sind anderweitig kaputt.

Zitat:

Hm..ist das nicht verständlich?
Ne, weil die Fragezeichen könnten auch Absicht sein :P

Hobbycoder 2. Jan 2018 17:46

AW: iso-8859-1 To String
 
Zitat:

Zitat von LTE5 (Beitrag 1390142)
Zitat:

Dann müsste ich ja im Grund immer MultiByteToWideChar nehmen, damit das einigermaßen universell funktioniert.
Ich hatte mal ein ähnliches Problem. Ich bin auf UTF8 beim Lesen und Schreiben umgestiegen.
Wenn es selbst dann Probleme gibt, hat der Nutzer in den Daten rumgepfuscht oder die Daten sind anderweitig kaputt.

Ich schreibe die Daten ja nicht selbst. Ich lese die aus einer Textdatei. Genaugenommen ist das das mbox-format, welches Thunderbird zum speichern der E-Mail verwendet. Und bei den Beispielzeilen handelt es sich um Betreffzeilen, die Thunder so gespeichert und möglicherweise auch so empfangen hat.

Zitat:

Hm..ist das nicht verständlich?
Ne, weil die Fragezeichen könnten auch Absicht sein :P[/QUOTE]
Ich denke sie dienen als Quotes und Text von Formatoptionen zu trennen. Wenn dann noch ein ? im Text vorkommen würde, dann wäre das sicher codiert.

Delphi.Narium 2. Jan 2018 18:03

AW: iso-8859-1 To String
 
Das sind wohl Texte aus Mails. Die sind mime-codiert.

Eventuell kommst Du ja mit TIdDecoderMIME von den Indys weiter.

https://stackoverflow.com/questions/...-utf-8-strings
https://juststrcpy.wordpress.com/200...-for-delphi-1/
http://theprofessionalspoint.blogspo...in-delphi.html
http://www.delphipraxis.net/991-base...-decoding.html

Oder mal nach delphi source decode mime suchen.

himitsu 3. Jan 2018 19:13

AW: iso-8859-1 To String
 
Zitat:

Zitat von Hobbycoder (Beitrag 1390140)
Was bedeutet B oder Q? Bei B ist der ganze Text codiert und bei Q nur die Länderspeziefischen Zeichen?

Keine Ahnung?

Vermutlich Binär Base64 und Quote :gruebel:
=?iso-8859-1?B?cmv8YiBQbHVzIE5ld3NsZXR0ZXIgIC0gVGVzdHBoYXNlIHZlcmzkbmdlcnQ=?=
***SPAM*** =?iso-8859-1?Q?Angebot_Toner_Po=DF_B=FCrotechnik_?=
=?utf-8?Q?Lieferavis=20=20f=C3=BCr=20Lieferschein=2015607478=20vom?=

Hobbycoder 5. Jan 2018 15:53

AW: iso-8859-1 To String
 
Alle klar.
B=Base64 Q=Qouted-Printable.

Ich hab das jetzt auch hinbekommen. Da ich eh nur die Betreffzeilen lesbar haben wollte, reicht mir das völlig.
Danke an alle.


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