Seite 1 von 1

Gelöst: Umlaute treiben mich in die Verzweiflung ...

Verfasst: 28.07.2022 11:15
von bin_neu_hier
Hi everybody,

wahrscheinlich wieder ein typisches Anfängerproblem:

Mein Progrämmchen (programmiert mit PureBasic 6.00 LTS Windows - x64) wählt weine Datei per Filerequester aus und speichert Dateiname mit Pfad in einem Textgadget. Dann werden alle Textgadgets gespeichert (Createfile). Beim Neustart des Programms werden die gespeicherten Daten gelesen (readfile) und in die Textgadgets zurückgeschrieben.

Leider wird der Dateiname "Schlüsselrückgabe.html" dann als "Schlüsselrückgabe.html" im Textgadget gezeigt.
Was mache ich da falsch?

Re: Umlaute treiben mich in die Verzweiflung ...

Verfasst: 28.07.2022 12:42
von ccode_new
Hi!
Wenn ein Dokument als Unicode (UTF-8) abgespeichert wurde, aber als ISO 8859-1 interpretiert wird, geschieht folgendes:

Erwartete Ausgabe: ä ö ü
Wirkliche Ausgabe: ä ö ü
Das ä wurde binär gesehen als 11000011 10100100 gespeichert. Diese beiden Bytes gehören laut UTF-8 zusammen, werden in ISO 8859-1 allerdings auseinander genommen. Folglich wird aus 11000011 ein à und aus 10100100 ein ¤-Zeichen.
Lösung: Nutze konsequent UTF-8

Details folgen evtl. später.

Kurze Anmerkung:
Hast du ein Codebeispiel, wie du die Gadgets ausliest und in eine Textdatei speicherst?
Öffnest du zufällig die Textdatei mit einem Texteditor der nicht auf UTF8(oder ähnlich) eingestellt ist und speicherst diese Datei damit zufällig im falschen Format ab?

Re: Gelöst: Umlaute treiben mich in die Verzweiflung ...

Verfasst: 28.07.2022 13:56
von bin_neu_hier
Hallo ccode_new,

jep, das war's! Habe den Hilfetext

Code: Alles auswählen

#PB_UTF8   : alle Lese/Schreib-String-Operationen werden UTF-8 verwenden, wenn nicht anders angegeben (Standard).
falsch interpretiert - dachte, weils ja der Standard sei, müsse es nicht explizit angegeben sein. Aber denkste! Habs jetzt bei allen Readfiles und Createfiles und bei allen Readstrings und Writestrings explizit angegeben, funzt soweit.

Herzlichen Dank!

Das bringt mich aber nochmal zu meinem Post
"Purebasic und zippen - Probleme mit Umlauten gibts immer noch?" vom 16.06.2022 11:10
(wie verlinkt man eigentlich richtig auf einen anderen Post?)
Ist das auch ein UTF8-Problem und wenn ja, wie kann man bei AddPackFile... (da vermute ich das Problem) den Dateinamen als UTF8-String übergeben?

Re: Gelöst: Umlaute treiben mich in die Verzweiflung ...

Verfasst: 28.07.2022 16:13
von ccode_new
Hmm!

Verlinken kannst du mit:

Code: Alles auswählen

[url]Hier sollte die Url stehen.[/url]
Du kannst auch im erweiterten Editormodus ganz oben auf das Kettensymbol (zwischen dem Bild und dem Tropfen) klicken.
Wenn du die Url so einfügst:

Code: Alles auswählen

[url=Hier steht die Url]Hier steht der Text zum Link[/url] 
kannst du auch einen benutzerdef. Linktext anzeigen lassen.
Außerdem gibt es den viel zu selten genutzen "Preview" Button neben dem "Submit" Knopf um eine Vorschau anzuzeigen.

Das Problem mit dem Zip-Gedöns werde ich mir heute Abend mal noch genauer betrachten.
Ich glaube nicht das es direkt an der String-Übergabe bei dem benannten PureBasic-Befehl liegt.
Welche Spracheinstellungen hast du unter Windows und verwendest du die aktuelle 7zip Version?

Re: Gelöst: Umlaute treiben mich in die Verzweiflung ...

Verfasst: 28.07.2022 19:42
von ccode_new
:mrgreen:
Das ist ja lustig.

Also mit dem unter Windows per Standard installierten Packer/Entpacker werden komische Zeichen bei den Dateien mit Umlauten angezeigt.
Bei dem 7zip-Programmchen werden nur Punkte bei den Umlauten angezeigt.

Aber mit den PureBasic eigenen Packer-/Entpacker-Routinen kann man wenigstens die Dateinamen korrekt verwalten und anzeigen.

Also grundsätzlich kein Bug, aber trotzdem total mysteriös.

Ich habe mich mal etwas belesen und festgestellt das *.zip ein unglaublich furchtbares Format ist, wenn es um Zeichenkodierungen geht.

Das ganze Dilemma hängt auch noch irgendwie mit dem "Standard" -UTF8 zusammen.
Dabei liegt es wohl an der Überführung von Unicode zu Utf8.
Siehe: https://de.wikipedia.org/wiki/Normalisierung_(Unicode)

Tipp:
Verwende ein anderes Format (Plugin). Zum Beispiel (#PB_PackerPlugin_Lzma).