Entwickler-Ecke
Internet / Netzwerk - UTF-8 Base64 Decodierung
OliverN_26 - Mo 22.08.11 19:53
Titel: UTF-8 Base64 Decodierung
Hey Leute
Ich krieg gleich nen Nervenzusammenbruch.
Ich muß auf den Betreff einer Mail reagieren. Diese kommt allerdings kodiert. Wie mittlerweile rausbekommen habe wohl "Base64" ?
Ich versuch nun schon den ganzen Tag da nen Decodierer zu finden und einzubauane aber es klappt einfach nicht :-(
Habt ihr nen Tip?
So sieht die Ausgabe aus:
Delphi-Quelltext
1:
| =?UTF-8?B?RXNwZWNpYWxpemF0ZSBlbiBhdXhpbGlhciBkZSBlbmZlcm1lcsOtYQ==?= |
Ich bin für jede Hilfe dankbar .. dreh echt glech durch :-(
OliverN_26 - Mo 22.08.11 20:08
Und wie krieg ich das hin das er mir das decodiert? Wie siehst du das?
Tankard - Mo 22.08.11 20:10
du brauchst doch nur ne base64 decodierung einbauen.
ich versteh das problem nicht so ganz, wo es bei dir haengt.
das solltest du hier vorher abschneiden.
=?UTF-8?B?
dann normale base64 decode function aufrufen und du hast den text
OliverN_26 - Mo 22.08.11 20:13
Den Link den du mir geschickt hast habe ich schon versucht.
Da steht jetzt nur noch total wirres Zeug drin. Auch bei den Betreffzeilen, die vorher normal kamen. Waren ja nur ein paar codiert.
---
Moderiert von
Narses: Beiträge zusammengefasst---
ah ok .. das mit dem Abschneiden ist neu ..
das heisst also NUR dann decodieren wenn der String mit "=?UTF-8?B?" beginnt und wenn er so beginnt den Teil vorher vom String lösen?
---
Moderiert von
Narses: Beiträge zusammengefasst---
aaaaarg
Klappt nicht :-(
Kannst du mir ein Bespiel geben wie du den Decodierer aufrufst?
Und welchen vor allem !
Vielen Dank
---
Moderiert von
Narses: Beiträge zusammengefasst---
Kann es sein das ich hinten auch noch mal was abschneiden muß?
Ich hab den vorderen Teil ausgesondert und nun kann man zumindest die ersten buchstaben klar lesen und erkenne worum es sich handelt. Aber der Rest is trotzdem noch durcheinander.
Tankard - Mo 22.08.11 20:42
kuckst du im anhang.
war das beispiel komplett was du gepostet hast, oder nur ne ausschnitt?
komplett, dann musst du auch ?= am ende abschneiden.
länge des strings kann man berechnen. schau mal diesen artikel an:
http://de.wikipedia.org/wiki/Base64
OliverN_26 - Mo 22.08.11 20:45
Danke
Ich versuchs und melde mich.
Das was ich geschickt habe war ein kompletter Auszug ...
BenBE - Mo 22.08.11 20:55
Bitte das RFC zum Thema lesen.
Auf dem Menü stehen: RFC 821, RFC 2045, RFC 2046, RFC 2047, RFC 4288, RFC 4289 and RFC 2049.
Es gibt dann bzgl. der Bedeutung noch paar andere, aber mindestens die sollte man kennen. In einem Header-Feld können übrigens auch mehrere Encodings und Charsets auftauchen:
Quelltext
1:
| Subject: Hallo=20=?UTF-8?B?V2Vs?=t=21 |
OliverN_26 - Mo 22.08.11 21:25
Jetz versteh ich noch weniger als vorher :-(
Kann ja sein das ich zu blöd bin aber ich kriegs einfach nich hin. Da steht nur Müll drin.
Delphi-Quelltext
1: 2:
| if copy(IdMessage1.Subject,1,10) = '=?UTF-8?B?' then showmessage(Base64Decode(copy(IdMessage1.Subject,11,Length(IdMessage1.Subject)-12))); |
BenBE - Mo 22.08.11 21:30
Wie? Schon fertig mit der Abend-Lektüre?
Mit = wird eine Escape-Sequenz gestartet. Der erste Teil hinter dem ? gibt den Zeichensatz (hier UTF-8) an, der zweite Teil das Encoding (hier B = Base 64, kann aber auch Q für Printed Quotable sein) und der dritte Teil bis zum nächsten ? gibt den auf diese Art kodierten Inhalt an. Zu guter letzt schließt das = die Sequenz ab.
Bei meinem Beispiel sind nun Printed-Quotable und MIME-Encoding gemischt. Wie das korrekt zu dekodieren ist, findest du in den besagten Dokumenten.
OliverN_26 - Mo 22.08.11 21:33
Ich hab echt nix gegen neue Problemstellungen. Ich will doch jetz nich ewige Dokmente durchwälzen, für ne doofe Decoierung wo es doch angeblich Decodierer im Netz gibt? Ich versteh nich warum es bei dem einen geht und bei mir nur Müll raus kommt. Was ich heut schon an Nerven an dieser Kacke gelassen habe glaubt mir eh niemand :-(
BenBE - Mo 22.08.11 21:37
Und ich möchte hier auch gar nicht bösartig sein, wenn ich die (zugegeben etwas länglichen) Dokumente hier verlinke, aber Du wirst Dir einiges an Ärger und Bugs ersparen, wenn Du Dir die Spezifikation einfach einmal durchliest.
Für PHP gibt es hier genug (auch funktionierende und konforme) Implementationen, aber für Delphi wüsste ich grad keine. Und warum die Indys das nicht dekodieren ist hier auch grad fraglich.
OliverN_26 - Do 25.08.11 09:10
Ich hab echt noch mal einiges probiert aber hab es einfach nicht hinbekommen :-( Der Ausgabetext wurde einfach immer nur noch kryptischer. Ich hab für mich jetzt eine andere Lösung gefunden die mir das gewünschte Ergebnis bringt. Vielleicht werde ich in naher Zukunft das Thema mit der Codierung noch mal angehen und es dann noch mal versuchen. Danke trotzdem für die Tips ...
lg
muchas - Do 25.08.11 11:48
Und wie hast es jetzt gelöst?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!