SciTE - Umlaute

  • Hi ich verwende die neueste SciTE-Version vom 12.06.2016.
    In den CallTips werden Umlaute nicht korrekt dargestellt.
    Weiß jemand was ich umstellen muss, damit dies wieder funktioniert.

    Danke

  • Überprüfe mal, mit welcher Codepage deine Calltips gespeichert wurden und ob du Einstellungen in deiner "SciTEUser.properties" bezüglich der Codepage hast.

    Ich hantiere nach Möglichkeit nur noch mit UTF-8 und in den "SciTEUser.properties" habe ich folgende Einstellungen hinzugefügt... wodurch dann ältere Sachen (ANSI) natürlich entsprechend angepasst werden müssen.

    SciTEUser.properties
    # Internationalisation
    # Unicode
    code.page=65001
    output.code.page=65001

  • Hi,
    ich habe festgestellt, dass die Consolenausgabe je nach Dateityp der in Scite geladenen Datei die entsprechende (falsche) Kodierung anzeigt!

    Relativ einfach nachzuprüfen:
    Kopiere txt mit Umlauten in die Console, öffne diverse Dateien, der Consoleninhalt wird "mitgezogen". Wenn ich eine bspw. aus einer CMD erstellte Textdatei oder eine EXE im Scite-Editor öffne, verändern sich die Umlaute in der Console!
    So wie ich das sehe, versucht Scite die Kodierung je nach geladenem Dateiformat "anzupassen". Entsprechend ändert sich nicht nur der Inhalt im Editor, sondern auch in der Console.

  • @Andy
    Habs probiert aber nichts erreicht

    Ich habe in sciTE in die Console "Männer" reinkopiert.
    Dann habe ich nacheinander mehrere au3-Skripte direkt aus SciTE geöffnet.
    In der Konsole ändert sich jedoch nichts.

    Habe ich dich falsch verstanden?

  • Schreibe/kopiere "Männer" in die Console

    Öffne in Scite eine EXE-Datei, der Inhalt der Console müsste dann "M寮er" sein...omg...nein, so nicht^^
    MxE4nner steht dann bei mir.

    Ich vermute(!), Scite versucht, beim Öffnen einer Datei "richtig" zu kodieren, und passt entsprechend die Console an.
    Dann würde es reichen, die geöffnete Datei in einer bestimmten Kodierung zu speichern und dann wieder zu laden. Dann müsste die Console auch wieder "richtig" kodieren.

  • omfg...ich glaube, ich bin raus ;(
    Soeben folgendes probiert: Datei in Scite geöffnet, in die leere Console "Männer" geschrieben und Enter gedrückt, ergab folgendes Ergebnis:

    Code
    >Männer
    Der Befehl "Mx84ner" ist entweder falsch geschrieben oder
    konnte nicht gefunden werden.
    >Exit code: 1    Time: 0.2326
  • Leider habe ich heute und morgen keine Zeit mehr für AutoIt/PC... evtl. schaffe ich es am Fr. dir ein kleines Script mit ein paar Beispielen zu tippern.

    Hier hast du aber schon mal etwas Futter...

    Ohne FileHandle öffnet Autoit alle Dateien im Modus $FO_UTF8_NOBOM. Mit FileHandle kann der Modus angegeben werden.
    Ich denke mal die wichtigsten Encoding-Modes sind $FO_UTF8_NOBOM und $FO_ANSI - und der spezielle Modus $FO_BINARY.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    *.cmd, *.bat, *.vbs, *.csv, *.dat, ... speichere und öffne ich im Modus $FO_ANSI.
    Damit die Umlaute in der SciTE-Console korrekt angezeigt werden, konvertiere ich die Strings mit _WinAPI_OemToChar().
    Beim Speichern konvertiere ich die Strings dann gegebenenfalls mit _WinAPI_CharToOem().
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Wurde SciTE manuell z. B. auf UTF-8 umgestellt, sollte man seine Files i.d.R auch mit diesem Modus öffnen und speichern.
    UTF-8 kannst du wahlweise als WideChar oder auch MultiByte speichern kannst.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Falls output.code.page=0 ist, müssen die Strings für die Ausgabe in der SciTE-Console nach ANSI konvertiert werden.
    OEM2ANSI --> _WinAPI_OemToChar()
    UTF82ANSI --> _WinAPI_MultiByteToWideChar() bzw. _WinAPI_WideCharToMultiByte()
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Zum konvertieren der Strings in eine beliebige Codepage gibt es zwei sehr nette Funktionen, die du dir mal anschauen solltest.
    _WinAPI_WideCharToMultiByte()
    _WinAPI_MultiByteToWideChar()
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    SciTE ist so voreingestellt (utf8.auto.check=4), dass es die Dateien beim Öffnen auf Zeichen aus dem erweitertem Bereich [> Chr(127) / ChrW(127)] überprüft.
    Wurde kein Zeichen aus dem erweitertem Bereich gefunden, wird als Codepage $FO_UTF8_NOBOM verwendet.
    Wenn ein Zeichen aus dem erweitertem Bereich [> Chr(127)] gefunden wurde, verwendet SciTE per Default die vom System vorgegebene Codepage (bei mir 1252).

    #~ Enhance function of auto checking utf8: providing two methods
    #~ utf8.auto.check=1 # detect utf8 and add BOM automatically Credits to SciTE-RU
    #~ utf8.auto.check=2 # detect utf8 and do not add BOM
    #~ utf8.auto.check=3 # detect ascii high characters and if none found set default encoding to UTF8 and add BOM
    utf8.auto.check=4 # detect ascii high characters and if none found set default encoding to UTF8 and do not add BOM
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Internationalisation
    code.page=0 # SciTE-Default - die vom System vorgegebene Codepage benutzen
    output.code.page=0

    # Unicode (empfohlen - ältere Scripte müssen dann allerdings konvertiert werden!)
    #code.page=65001
    #output.code.page=65001

    # OEM 850 (Fred Feuerstein)
    #code.page=850
    #output.code.page=850

    # Windows 1252 (Default / = 0)
    #code.page=1252
    #output.code.page=1252
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # In der SciTE-Hilfe steht folgendes:
    Encodings
    SciTE will automatically detect the encoding scheme used for Unicode files that start with a Byte Order Mark (BOM).
    The UTF-8 and UTF-16 encodings are recognised including both Little Endian and Big Endian variants of UTF-16.

    UTF-8 files will also be recognised when they contain a coding cookie on one of the first two lines.
    A coding cookie looks similar to "coding: utf-8" ("coding" followed by ':' or '=', optional whitespace,
    optional quote, "utf-8") and is normally contained in a comment:

    # -*- coding: utf-8 -*-
    For XML there is a declaration:

    <?xml version='1.0' encoding='utf-8'?>
    For other encodings set the code.page and character.set properties.
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


    Hi ich verwende die neueste SciTE-Version vom 12.06.2016.
    In den CallTips werden Umlaute nicht korrekt dargestellt.
    Weiß jemand was ich umstellen muss, damit dies wieder funktioniert.

    a.) Du korrigierst die Datei in der die Calltips gespeichert wurden und änderst die Codepage... entweder nach ANSI oder UTF-8 konvertieren.
    Die Kodierung kannst du (testweise) auch direkt in SciTE ändern... siehe Bild.

    b.) Du änderst den Encoding-Modus in SciTE indem du in deiner SciTEUser.properties folgende Zeilen einfügst:


    code.page=65001
    output.code.page=65001

    oder... wenn das nicht funktioniert...

    code.page=0
    output.code.page=0

    Damit die Änderungen in deiner SciTEUser.properties Wirkung zeigen, musst du SciTE neu starten.
    SciTE-Zeichensatzkodierung.png

    Einmal editiert, zuletzt von Bitnugger (2. November 2016 um 15:36)

  • Irgendwie will es nicht.

    Ich habe es mit
    code.page=65001
    output.code.page=65001

    und dann mit

    code.page=0
    output.code.page=0

    probiert.
    Mal passt die Darstellung, mal nicht.

    Auch das umstellen der Zeichensatzcodierung hilft nicht immer.
    Mal steht es bei UTF-8, mal bei Systemvoreinstellung.

    Die calltips-Datei möchte ich nicht umstellen, da diese doch beim nächsten speichern wieder zurückgestellt wird, oder?

  • Die calltips-Datei möchte ich nicht umstellen, da diese doch beim nächsten speichern wieder zurückgestellt wird, oder?

    Wenn du in SciTE die Codepage auf 65001 umgestellt hast, dann verwendet SciTE diese auch in jedem Fall. Sollten sich die Codepage bei deinen Calltips nun doch wieder ändern, dann hast du diese mit einer anderen Anwendung bearbeitet/gespeichert, die dann im Normalfall die System-Codepage verwendet, Windows ANSI 1252. In dem Fall musst du die Anwendung entsprechend anpassen und sie auf UFT-8 umstellen.

    code.page=0
    output.code.page=0

    Das ist die in SciTE voreingestellte Codepage... die musst du dann nicht angeben.

    Mal steht es bei UTF-8, mal bei Systemvoreinstellung.

    Hm, das könnte dann an utf8.auto.check= liegen... siehe Post #9. Meinst du das jetzt auf verschiedenen Dateien bezogen, oder wechelt es bei ein und derselben Datei? Wie hast du die Datei geladen und wo willst du sie anzeigen?

  • Bezieht sich die Einstellung "Zeichensatzcodierung" auf die Datei oder SciTE im allgemeinen?

    Die Einstellungen für die Zeichensatzcodierung in SciTE beziehen sich selbstverständlich nur darauf, mit welcher Codepage SciTE eine Datei öffnet, speichert/anzeigt.

    Wenn du nun Strings, die in einer anderen Codepage vorliegen, in der Scite-Console ausgeben willst, müssen diese zuvor entsprechend deinen Einstellungen konvertieren.

    AutoIt verwendet per Default UTF-8. Wenn du dir vor dem Öffnen/Speichern ein File handle besorgst, kannst du die Codepage selbst bestimmen.

    AutoIt
    ; Local $hFileOpen = FileOpen($sFilePath, $FO_READ, $FO_UTF8) ; AutoIt Default
    Local $hFileOpen = FileOpen($sFilePath, $FO_READ, $FO_ANSI) ; ***
    Local $sFile = FileRead($hFileOpen)
    FileClose($hFileOpen)

    Festzustellen, mit welcher Codepage eine Datei gespeichert wurde, ist ein Ratespiel. Mit absoluter Gewissheit lässt sich dass nicht ermitteln.

    Solange kein Zeichen aus dem erweiterten ANSI-Zeichensatz [>Asc(127)] enthalten ist, spielt dass auch keine Rolle. Sind Zeichen aus dem erweiterten ANSI-Zeichensatz vorhanden, kannst du die Codepage dadurch ermitteln, indem du dir den Asc-Code z. B. für ein im Text vorhandenes "ä" anzeigen lässt bzw. vergleichst. Je nach verwendeter Codepage befindet sich das Zeichen dann nämlich an einer anderen Stelle in der Zeichentabelle.

    Hier siehst du ein paar Beispiele...

    Einmal editiert, zuletzt von Bitnugger (14. November 2016 um 01:33)

  • Festzustellen, mit welcher Codepage eine Datei gespeichert wurde, ist ein Ratespiel. Mit absoluter Gewissheit lässt sich dass nicht ermitteln.

    genau das hatte ich weiter oben bereits geschrieben, Scite "versucht" die passende Kodierung zu bestimmen und passt den dargestellten Text entsprechend an! Imho sind die in Scite "voreingestellten" Kodierungen lediglich ein Hinweis....wer weiß?