Seite 1 von 1

ScintillaGadget und Umlaute...

Verfasst: 10.10.2019 09:00
von Ghosty1967
Hallo zusammen,
ich verwende in einem Programm das Scintilla Gadget. Alles funktioniert eigentlich wirklich wunderbar bis auf die
Tatsache, das sämtliche Umlaute in Texten, welche ich in das ScintillaGadget lade nicht als diese dargestellt werden. Wie
muss ich denn vorgehen, wenn ich sicherstellen möste, das die Umlaute auch dargestellt werden?

Hier ein Auszug aus dem Programmcode um eine Textdatei in das Gadget zu laden. Was mache ich denn falsch oder habe
ich vergessen?

Code: Alles auswählen

Procedure LoadEditorFile(filename.s)
  If filename = ""
    filename = OpenFileRequester("Datei öffnen", "", "Alle Dateitypen (*.*)|*.*", 0)
  else
    file.l = ReadFile(#PB_Any, filename)
    If file <> 0
      len.l = Lof(file)
      *mem = AllocateMemory(len)
      If *mem
        ReadData(file, *mem, len)
        ScintillaSendMessage(#EDT_ROWEDITOR, #SCI_SETTEXT, 0, *mem)
        FreeMemory(*mem)
      EndIf
      CloseFile(file)
    EndIf
  EndIf
EndProcedure

Re: ScintillaGadget und Umlaute...

Verfasst: 10.10.2019 10:49
von Andesdaf
Probier mal, den Text UTF-8-kodiert ins ScintillaGadget zu übergeben.

Re: ScintillaGadget und Umlaute...

Verfasst: 10.10.2019 17:38
von Ghosty1967
was ich schon ohne Erfolg versucht habe ist beim Initialisieren des Gadgetgets direkt UTF8-Codierung anzugeben mit

Code: Alles auswählen

  ScintillaSendMessage(#EDT_ROWEDITOR, #SCI_SETCODEPAGE, #SC_CP_UTF8)
als auch beim Einlesen der Textdatei in den Speicher das Flag #PB_UTF8 anzugeben

Code: Alles auswählen

  ReadFile(#PB_Any, filename, #PB_UTF8)
leider beides ohne Erfolg (Wobei auch die anderen Codepage-Parameter bei ReadFile hier keinen Einfluss haben)
So wird z.B das Wort "Zugungück" im ScintillaGadget als "ZugunglxFCck oder das Wort
"Mädchen" als "MxE4dchen" angezeigt...
Wie kann man hier Sicherstellen, dass der Text "richtig" dargestellt wird?

Re: ScintillaGadget und Umlaute...

Verfasst: 10.10.2019 19:14
von #NULL
Was du bei ReadFile() angibst ist die Codierung der zu lesenden Datei. Der String den du erhältst ist immer utf-16. Darum musst du ihn mit UTF8() umwandeln (siehe Doku zu ScintillaGadget()). Du kannst die gesamte Datei übrigens auch mir ReadString(... #PB_File_IgnoreEOL) einlesen. Dann hast du utf-16 und musst mit UTF8() umwandeln. Wenn du sicher bist das die Datei schon utf-8 ist und sie direkt in einen Buffer laden willst, dann musst du denke ich trotzdem vorher das BOM von LOF() weg rechnen etc. und erst dahinter lesen.

Re: ScintillaGadget und Umlaute...

Verfasst: 10.10.2019 20:15
von ts-soft
Erstmal die richtige Einstellung für die IDE

IDE : Datei : Datei-Format = Codierung: UTF-8

Re: ScintillaGadget und Umlaute...

Verfasst: 10.10.2019 20:17
von Kiffi
@Ghosty1967:

Vielleicht können wir besser helfen, wenn Du uns die einzulesende Originaldatei zur Verfügung stellst (beispielsweise über Filehorst).

Grüße ... Peter

Re: ScintillaGadget und Umlaute...

Verfasst: 10.10.2019 20:53
von mk-soft

Re: ScintillaGadget und Umlaute...

Verfasst: 11.10.2019 09:04
von Ghosty1967
Erstmal Danke ich für die Tipps...
ich probiere mal ein bisschen rum und melde mich dann wieder :mrgreen:
Danke nochmal