![]() |
=E2=80=9E umwandeln
Hallo,
ich bekomme im Mailtext aus pop3send von synapse folgende Zeichenfolgen: =E2=80=9E (wäre ein Gänsefüßchen).
Delphi-Quellcode:
Wie wandle ich denn einen solchen Text mit solchen Zeichen in "lesbaren" Text um?Der =E2À=9EWorkshop=E2À=9C hört sich gut an. Falls ihr wieder sowas plant gib mit .... Natürlich sind in dem Text auch noch andere Sonderzeichen (=C3=BC) für ü usw. Danke. Josef |
AW: =E2=80=9E umwandeln
Zitat:
Wenn der Text aber in echt so aussieht, dann kannst du es vergessen. Denn À und ö sind nicht kodiert, weswegen es dir dann das UTF-8 zerschießt. =XX ist erstmal ein codiertes/gequtetes Zeichen in hexadezimaler Darstellung, was man umwandeln kann. Und dann sieht es so aus, als wenn es dahinter UTF-8 wäre, was man ebenfalls nochmal umwandeln müsste. Die genaue Codierung (UTF-8) müsste aber irgendwo im Header der Message drinstehn, genauso wie die erste Codierung eigentlich auch im Header erwähnt worden sein müsste. (es sei denn sie ist per Default immer so) Indy hat da aber bestimmt irgendwo auch eine Encodingfunktion für das =XX rumliegen. (z.B. TIdEncoderQuotedPrintable) |
AW: =E2=80=9E umwandeln
Diese Umwandlung kann synapse auch.
|
AW: =E2=80=9E umwandeln
Zitat:
|
AW: =E2=80=9E umwandeln
Zitat:
Ja logisch (siehe meine Signatur) |
AW: =E2=80=9E umwandeln
Hi,
naja, wenn's so einfach wäre: in synapse hab ich es schon probiert: Der Header sieht so aus:
Delphi-Quellcode:
Mit TPop3send->TMimeMess hab ich auch alles Mögliche eingestellt.--001a11c34908e0619204f16fdbc2 Content-Type: multipart/alternative; boundary=001a11c34908e0619004f16fdbc1 --001a11c34908e0619004f16fdbc1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable mess.DecodeMessage; mess.MessagePart.DecomposeParts; // mess.MessagePart.CharsetCode := UTF_8; [/DELPHI] Alles mal vor ..decode, dann nach ...decode, dann mit ...UTF-8, dann ohne, dann das gleiche nochmals bei den einzelnen Parts usw. Auch mit anderen Zeichensätzen, ISO_....., CP_.... Diese HEX-Werte sind immer drin. Soweit ich das sehe, ist diese Beispielmail ein paar Mal weitergeleitet worden. (Re:Re:) Auch die werte für dasselbe zeichen sind unterschiedlich: '=C3=BC', 'ü', und '=FC', 'ü',... Wenn das synapse umwandeln kann, kannst du mir auch sagen, wie ......:oops: Ich hab's mal mit replace versucht, aber es gibt so viele Varianten, daß es sinnlos ist, sie alle zu finden und zu ersetzen. Danke Josef |
AW: =E2=80=9E umwandeln
|
AW: =E2=80=9E umwandeln
Zitat:
=C3=BC könnte das UTF-8-ü sein (eventuell auch UCS-2, aber ich glaub eher an UTF-8 .... hab das jetzt nicht nachgerechnet), aber im UTF-8, im ANSI und sonstwie im Unicode ist das =FC total falsch. In den deutschen Codepages ist das ü meistens ein =81. |
AW: =E2=80=9E umwandeln
Hallo,
Zitat:
Danke für den Hinweis. Mit "DecodeQuotedPrintable" schaut's schon ganz manierlich aus. Nur.... bei einer Mail, auch mit Re:Re: ist ein Mac Rechner dabei. Da sind jetzt "???" statt der ü,ö, usw. Wenn ich das dann versuche umzuwandeln, stehen bei den Texten der anderen Rechner wieder "falsche" Zeichen. Es ist zum Verzweifeln mit diesen Zeichensätzen. vielleicht auch dazu noch ein Tipp?? Danke. Josef |
AW: =E2=80=9E umwandeln
Zitat:
Entweder du versuchst das manuell zu übersetzen und das bezieht sich vorallem auf das UTF-8, welches du Zeichen für Zeichen selber übersetzen mußt. Du dekodiertst also erst das Quoted-Printable und machts den Rest manuell. Die Zeichen, welche sich übersetzen lassen (welche also der UTF-8-Codierung entsprechen), werden übersetzt und die Restlichen werden unverändert übernommen (billig von AnsiChar nach Char gekastet). Oder du nutzt das, was funktioniert. (mir ist noch keine UTF-8-Dekodierfunktion untergekommen, welche Fehler versucht zu beheben) Das Quoted-Printable selber scheint ja korrekt zu sein, womit du das erstmal auf den Text anwenden kannst. Könntest du
Delphi-Quellcode:
verwenden und wenn das das UTF-8 dekodiert, dann wird das genommen und ansonsten lässt du den Schott-String so, wie er ist.
UTF8ToString
Delphi-Quellcode:
Oder beim UTF-8 wird eben fehlerignorierend übersetzt.
S := UTF8ToString(MyText);
if S = '' then S := MyText; ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz