[Bug] Einfügen von UTF-8-Zeichen aus Zwischenablage in Textkörper erzeugt falsche Kodierung

  • Bei mir fügt Zwischablage falsch in Textmails ein.
    The Bat! 8.0.18 32bit Windwos 10 x64

    Testcase:
    Öffnet https://labs.gwendragon.de/blog/News/scho…neues-jahr-2017 (Seite ist korrekt UTF-8 kodiert)
    Kopiert den Text der Überschrift 'Ich wünsche Allen schöne Festtage und ein Gutes Neues Jahr' mitsamt den Unicodezeichen von der Seite in die Zwischenanlage
    Öffnet The Bat! dessen Vorlage für Neue Nachricht in den Einstellungen auf UTF-8 gestellt ist
    Fügt ihn den Text aus der Zwischenablage in den textkörper ein
    Speichert das Mail als Entwirf
    Zeigt das Mail im Ordner Entwurf an
    Text zeigt "Ich wünsche Allen schöne Festtage 🎄und ein Gutes Neues Jahr 🎆"

    Bei euch auch?


    The Bat! Pro 11.x BETA (32bit) | Win 11 Pro x64 | GnuPG 2.4.x | XMP + Regula

    Wer mich Er oder der Drache nennt, bekommt von der Drachin Pratze und Feuer zu spüren.

  • Text zeigt "Ich wünsche Allen schöne Festtage 🎄und ein Gutes Neues Jahr 🎆"

    Ich kann das auch mit v7 bestätigen. Wenn man aber die Nachricht wieder im Editor öffnet, ist alles OK.

    Es könnte an der Schriftart liegen. In welcher sind die beiden Bilder enthalten?

    Mit dem HTML-Editor hat man das Problem übrigens nicht.

  • Ich nehme an die Schrift ist Windows Segue Emoji.
    Ja, im Editor passt es noch.
    Aber das versandte Mail hat die falsche Kodierung!


    The Bat! Pro 11.x BETA (32bit) | Win 11 Pro x64 | GnuPG 2.4.x | XMP + Regula

    Wer mich Er oder der Drache nennt, bekommt von der Drachin Pratze und Feuer zu spüren.

  • Bei mir wird der Text korrekt aus der Zwichenablage eingefügt (MicroEditor). Lediglich die Symbole werden "kryptisch" dargestellt.

    Win 7_64bit
    TehBat!_ 8.0.18_64bit

    Die meisten Menschen sind bereit zu lernen, aber nur die wenigsten, sich belehren zu lassen.
    Winston Churchill

    Einmal editiert, zuletzt von Heidrun (28. Dezember 2017 um 10:05)

  • Bei mir wird der Text korrekt aus der Zwichenablage eingefügt (MicroEditor). Lediglich die Symbole werden "kryptisch" dargestellt

    In den Editor ja, aber sobald du die Nachricht als Entwurf speicherst und den Editor verlässt, siehst du im Viewer falsch kodierte Umlaute. Man braucht die Nachricht also nicht mal zu versenden. Öffnet man den Entwurf wieder im Editor, wird alles bis auf die zwei Bilder richtig angezeigt. Man muss die Schritte zur Reproduktion im BT beachten.

  • Zudem kennt Windows 7 meines Wissens noch nicht diese neuen Emojis (es sind keine Bilder! sonder im Unicode-Zeichensatz) und hat auch nicht den Zeichensatz zur Darstellung.


    The Bat! Pro 11.x BETA (32bit) | Win 11 Pro x64 | GnuPG 2.4.x | XMP + Regula

    Wer mich Er oder der Drache nennt, bekommt von der Drachin Pratze und Feuer zu spüren.

  • Zudem kennt Windows 7 meines Wissens noch nicht diese neuen Emojis

    Wenn die entsprechende Schriftart installiert ist, dann müsste das OS keine Rolle spielen, solange es Unicode unterstützt. Im Browser werden diese Bilder-Zeichen unter Windows 7 jedenfalls richtig dargestellt. Beim Kopieren in Word sieht man sie auch. Word zeigt dabei an, dass es sich hierbei um die Schriftart Segoe UI Symbol handelt. Die Segoe-Familie ist zwar Standard unter Win10, wurde aber wohl mit irgendeinem Update auch unter Win7 installiert.

    Ich habe das jetzt extra getestet. Wenn man in TB! die o.g. Schriftart einstellt, dann werden auch die Bilder im Editor richtig angezeigt. Der Viewer spinnt aber weiterhin.

  • Ich kann den Bug leider nicht bestätigen

    Und wenn du die Nachricht dir selbst zuschickst?

    Bei mir kommt sie so an:

    Code
    Ich wünsche Allen schöne Festtage 🎄und ein Gutes Neues Jahr 🎆

    Interessant ist aber, dass bei mir unten noch "Mit freundlichen Grüßen" steht und dass z.B. der Buchstabe "ü" in "wünsche" und "Grüßen" im Quelltext identisch mit =C3=BC kodiert ist:

    Code
    w=C3=BCnsche
    
    
    Gr=C3=BC=C3=9Fen

    "Grüßen" wird dabei richtig angezeigt, "wünsche" aber nicht.

  • Ich glaube das Problem gelöst zu haben. "Einfügen von UTF-8-Zeichen" ist falsch, denn es sind keine UTF-8, sondern UTF-16LE Zeichen.

    Bei mir sind in den TB!-Benutzereinstellungen unter "Zeichensätze" insgesamt vier Unicode-Zeichensätze verfügbar:
    1. Unicode
    2. Unicode (Big-Endian)
    3. UTF-7
    4. UTF-8

    Der zweite ist UTF-16BE, der erste müsste demnach UTF-16LE (also Little-Endian) sein. Wenn ich nämlich "Unicode (Big-Endian)" einstelle, dann bekomme ich die Fehlermeldung:

    Code
    Could not perform conversion from "UTF-16LE" into "unicodeFFFE"

    "unicodeFFFE" ist der IETF-Name von UTF-16BE. Die Fehlermeldung besagt also, dass vorhandene UTF-16LE Zeichen nicht in UTF-16BE konvertiert werden können. Wieso eine ähnliche Fehlermeldung nicht bei UTF-8 erscheint, ist nicht verständlich.

    Jedenfalls sind alle Umlaute auch im Viewer sichtbar, wenn man als Zeichensatz für die Nachricht Unicode bzw. UTF16LE einstellt. Es ist also kein Bug. Das einzige Problem ist nur, dass bei UTF-8 nicht gewarnt wird, dass ein falscher Zeichensatz verwendet wird.

  • In den Editor ja, aber sobald du die Nachricht als Entwurf speicherst und den Editor verlässt, siehst du im Viewer falsch kodierte Umlaute. Man braucht die Nachricht also nicht mal zu versenden. Öffnet man den Entwurf wieder im Editor, wird alles bis auf die zwei Bilder richtig angezeigt. Man muss die Schritte zur Reproduktion im BT beachten.

    Und wenn du die Nachricht dir selbst zuschickst?
    Bei mir kommt sie so an:

    Code
    Ich wünsche Allen schöne Festtage 🎄und ein Gutes Neues Jahr 🎆


    Interessant ist aber, dass bei mir unten noch "Mit freundlichen Grüßen" steht und dass z.B. der Buchstabe "ü" in "wünsche" und "Grüßen" im Quelltext identisch mit =C3=BC kodiert is

    Auch wenn ich die Mail an mich selbst verschicke - die Umlaute werden korrekt angezeigt. Allerdings habe ich in den Benutzereinstellungen die Vorgabe bei den Zeichensätzen nicht geändert, es ist also lediglich UTF-8 aktiviert. Vielleicht ist ja dort die Ursache zu suchen?

    Die meisten Menschen sind bereit zu lernen, aber nur die wenigsten, sich belehren zu lassen.
    Winston Churchill

  • Hexdump der herunter geladenen HTML-Datei zeigt:
    1470 : 0A 0A 49 63 68 20 77 C3 BC 6E 73 63 68 65 20 41 ..Ich w..nsche A
    1480 : 6C 6C 65 6E 20 73 63 68 C3 B6 6E 65 20 46 65 73 llen sch..ne Fes
    1490 : 74 74 61 67 65 20 F0 9F 8E 84 75 6E 64 20 65 69 ttage ....und ei
    14A0 : 6E 20 47 75 74 65 73 20 4E 65 75 65 73 20 4A 61 n Gutes Neues Ja
    14B0 : 68 72 20 F0 9F 8E 86 0A 3C 2F 61 3E 0A 3C 2F 68 hr .....</a>.</h

    Als da wäre
    F0 9F 8E 84 https://unicode-table.com/en/1F384/
    F0 9F 8E 86 https://unicode-table.com/en/1F386/

    Das ist eine UTF-8-Sequenz aus dem F0-Block.

    @sanyok Bitte warum soll UTF-8 der falsche Zeichensatz in dem Fall sein wie du im Bugtracker schreibst?


    The Bat! Pro 11.x BETA (32bit) | Win 11 Pro x64 | GnuPG 2.4.x | XMP + Regula

    Wer mich Er oder der Drache nennt, bekommt von der Drachin Pratze und Feuer zu spüren.

    5 Mal editiert, zuletzt von GwenDragon (29. Dezember 2017 um 11:00)

  • Bitte warum soll UTF-8 der falsche Zeichensatz in dem Fall sein wie du im Bugtracker schreibst?

    Weil:
    1. Beim falschen Zeichensatz die o.g. Fehlermeldung erscheint, die besagt, dass UTF-16LE Zeichen nicht konvertiert werden können.
    2. Beim Einstellen von "Unicode" (also UTF-16LE) anstelle von UTF-8 es das Problem nicht gibt.

    Es kann jetzt natürlich sein, dass TB! diese Zeichen fälschlicherweise als UTF-16LE Zeichen interpretiert, aber das muss Ritlabs klären. Ich habe momentan nur diese Infos.

    Edit:
    Es kann jetzt auch sein, dass ursprünglich die Zeichen auf der Webseite UTF8-Zeichen waren, beim Kopieren in die Windows-Zwischenablage jedoch automatisch von Windows (vielleicht wegen der Bilder) in UTF.16LE konvertiert wurden und daher beim Einfügen in TB! nicht mehr UTF-8 Zeichen waren.

  • Zeichen auf der Webseite UTF8-Zeichen waren, beim Kopieren in die Windows-Zwischenablage jedoch automatisch von Windows (vielleicht wegen der Bilder) in UTF.16LE

    Kann sein, dass The Bat! die Zwischenablage das vermurkst.
    Aber es gibt keine Bilder im Text, das sind Unicode Zeichen die Windows aus Segoe Emoji-Schrift holt.

    Was schon seltsam ist, dass ich aus der Webseite kopieren und in irgendein Webmail, Libreoffice oder Notepad einfügen kann.


    The Bat! Pro 11.x BETA (32bit) | Win 11 Pro x64 | GnuPG 2.4.x | XMP + Regula

    Wer mich Er oder der Drache nennt, bekommt von der Drachin Pratze und Feuer zu spüren.


  • Wenn ich die Nachricht im TB!-Editor als UTF-8-TXT speichere, dann bekomme ich in einem Hex-Editor dasselbe Ergebnis. Dann ist auch in TB! insoweit alles OK.

    Ich habe mittlerweile festgestellt, dass die Zeichen beim Versand richtig kodiert werden, nur dass der TB!-Viewer sie falsch anzeigt. Wenn man nämlich eine empfangene Nachricht im TB!-Editor öffnet, dann sieht man wieder korrekte Umlaute, was aber nicht hätte sein können, wenn die Nachricht falsch kodiert wäre. Wenn man außerdem eine solche Nachricht z.B. in Thunderbird empfängt, dann wird dort auch alles richtig dargestellt. Es spinnt also nur der TB-Viewer.


    Aber es gibt keine Bilder im Text, das sind Unicode Zeichen die Windows aus Segoe Emoji-Schrift holt.

    Ja, ich meine auch die beiden Bilder-Zeichen "Christmas Tree" und "Fireworks" aus der Schriftart Segoe UI Symbol (s.o.), wollte das nur abkürzen. Diese Schriftart beinhaltet auch normale Buchstaben (z.B. im Gegensatz zu Webdings und Wingdings). Stellt man sie sowie UTF16-LE in TB! ein, sieht man alles wie z.B. im Browser. Es funktioniert also schon, nur dass für TB! das UTF16-LE Zeichen sind und sie daher bei jedem anderen Zeichensatz falsch kodiert werden oder eine Fehlermeldung erscheint.

    Auf der anderen Seite soll's bei Heidrun gerade mit UTF-8 klappen (s.o.).


    Libreoffice

    Funktioniert wahrscheinlich wie MS Word, zu dem ich oben schon geschrieben habe. Da kann man ja für jeden Buchstaben eine andere Schriftart wählen. In TB! aber nur für den gesamten Text.


    Notepad

    Notepad wollte ich auch schon als Beispiel nennen. Bei mir werden die beiden Bilder-Zeichen sowohl in MS Notepad als auch z.B. in Notepad++ erst angezeigt, wenn ich Segoe UI Symbol wähle, also genauso wie in TB!

    Habe das jetzt extra mit MS Notepad und Notepad++ hinsichtlich des Zeichensatzes getestet und es gibt widersprüchliche Ergebnisse.

    MS Notepad kann die Datei als UTF-16LE (heißt dort wie in TB! auch nur Unicode) und als UTF-8 speichern und beim Öffnen zeigt es in beiden Fällen alle Zeichen inkl. Bilder-Zeichen, wenn Segoe UI Symbol eingestellt ist, korrekt an.

    Notepad++ kann ebenfalls als UTF-16LE (heißt dort UCS-2 Little Endian) oder UTF-8 ohne jegliche Nachfrage oder Hinweis speichern, zeigt jedoch beim Öffnen die Bilder-Zeichen nur dann an, wenn sie zuvor als UTF-8 gespeichert wurden. Mit UTF-16LE gibt's hingegen Kauderwelsch, auch wenn Segoe UI Symbol eingestellt ist.

    Speichert man in MS Notepad als UTF-16LE und öffnet die Datei in Notepad++, werden die Bilder auch nicht angezeigt, in MS Notepad (und auch z.B. in AkelPad und Word) aber schon. Umlaute hingegen werden in beiden Programmen immer korrekt dargestellt, egal welchen Zeichensatz man nimmt.


    Edit:
    Auf deiner Webseite fehlt übrigens zwischen dem "Christmas Tree"-Zeichen und dem Wort "und" ein Leerzeichen. Vielleicht hat das TB! aus der Fassung gebracht? ;)

  • Auf deiner Webseite fehlt übrigens zwischen dem "Christmas Tree"-Zeichen und dem Wort "und" ein Leerzeichen. Vielleicht hat das TB! aus der Fassung gebracht?

    Danke für den Hinweis, ich habe es geändert.

    Ausser Fassung? The Bett!? LOL. Nein, die Feldermaus hat wohl Winterschnarch.
    Wäre schön wenn das fehldne Leerzeichen hülfe, aber so ist es leider nur ein Weihnachtswusnch von dir. Denn wenn der UTF-8-Parser richtig interpretiert, weil er doch dass bei F0 noch drei Byte danach gescannt werden müssen und einem Zeichen ist es wurscht ob ein Leerzeichen folgt.


    The Bat! Pro 11.x BETA (32bit) | Win 11 Pro x64 | GnuPG 2.4.x | XMP + Regula

    Wer mich Er oder der Drache nennt, bekommt von der Drachin Pratze und Feuer zu spüren.