Frage zu AutoIt3Wrapper

  • Hallo,

    ich habe da mal eine Frage zu AutoIt3Wrapper

    Als Direktive habe ich u.a. "#AutoIt3Wrapper_Res_Language=1031" in meinem Script stehen.

    Aber sobald ich das Script mit "Ctrl + F7" in SciTE (also mit der Wrapper GUI) kompiliere, werden alle deutschen Umlaute durch andere Zeichen ersetzt.

    Da sich dadurch auch Fensternamen usw. ändern, funktioniert das kompilierte Script (die erstellte exe) natürlich auch nicht mehr.

    Z.B. Wird aus dem "Zurück" Text auf einem Button dann "Zurück" und der Button wird dann eben auch nicht mehr erkannt.

    Wenn ich dagegen SciTE verlasse und das Script über das Kontextmenü von Windows kompiliere, so werden die Umlaute nicht ausgetauscht und daherfunktioniert die exe auch.

    Anscheinend gibt es nur Müll, wenn die GUI irgendetwas ins Script schreibt (z,B. eine geänderte Direktive).

    Also, Kompilieren mit GUI ergibt Müll, kompilieren ohne GUI funktioniert richtig.

    Und mehrfaches kompilieren mit der GUI ergibt auch mehrfachen Müll, da der Wrapper dann die ersetzten Zeichen auch mehrfach ersetzt.

    Kann man dem Wrapper das irgendwie "abgewöhnen" oder liegt das an irgendeiner Einstellung von SciTE?

    MfG:

    BigRox

  • Ich kann den Umlautfehler bei mir nicht reproduzieren. Habe es mit deiner Methode versucht, aber bei mir funktioniert alles problemlos.

    Vielleicht liegt es an einer Standard-Kodierung, die dein Windows oder Scitie nutzt. ?(

  • Wenn Du in SciTE -> Menü [Optionen] die SciTEGlobal.properties und SciTEUser.properties öffnest, was steht dort bei :

    code.page =

    output.code.page =

    ( nicht die ggf. mit # auskommentierte(n) Zeile(n) )

    Der Wert 65001 entspricht UTF-8.

    Schaue Dir auch mal die Funktion _WinAPI_WideCharToMultiByte() an.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    Einmal editiert, zuletzt von Musashi (9. Januar 2020 um 19:50)

  • global:

    Code
    user:
    
    title.full.path=1
  • xSunLighTx3 :

    Ja, es geht um den Bereich # Internationalisation in der SciTEGlobal.properties ggf. "übersteuert" durch Einträge in der SciTEUser.properties :

    Ich verwende z.B. noch eine ältere Version von SciTE4AutoIt, da steht es so drin :

    Spoiler anzeigen

    # Internationalisation

    #NewFileEncoding=CodePage/UTF8BOM/UTF8/UTF16BE/UTF16LE # Only available in SciTE4AutoIt3 version

    # Japanese input code page 932 and ShiftJIS character set 128

    #code.page=932

    #character.set=128

    # Unicode

    #code.page=65001

    code.page=0

    # character.set=204

    #command.discover.properties=python /home/user/FileDetect.py "$(FilePath)"

    # Required for Unicode to work on GTK+:

    #LC_CTYPE=en_US.UTF-8

    if PLAT_GTK

    output.code.page=65001

    if PLAT_MAC

    output.code.page=65001

    In neueren Versionen von SciTE4AutoIt (wie bei Dir) sieht es dann so aus :

    (hier hat sich hinsichtlich Kodierungserkennung eh einiges getan)

    Spoiler anzeigen

    # Internationalisation

    #NewFileEncoding=CodePage/UTF8BOM/UTF8/UTF16BE/UTF16LE # Only available in SciTE4AutoIt3 version

    #~ Enhance function of auto checking utf8: providing two methods

    # detect utf8 and add BOM automatically Credits to SciTE-RU

    #~ utf8.auto.check=1

    # detect utf8 and do not add BOM

    #~ utf8.auto.check=2

    # detect ascii high characters and if none found set default encoding to UTF8 and add BOM

    #~ utf8.auto.check=3

    # detect ascii high characters and if none found set default encoding to UTF8 and do not add BOM

    utf8.auto.check=4

    # Japanese input code page 932 and ShiftJIS character set 128

    #code.page=932

    #character.set=128

    # Unicode

    #~ code.page=65001

    code.page=0

    #character.set=204

    #command.discover.properties=python /home/user/FileDetect.py "$(FilePath)"

    # Required for Unicode to work on GTK+:

    #LC_CTYPE=en_US.UTF-8

    if PLAT_WIN

    output.code.page=0

    if PLAT_GTK

    output.code.page=65001

    if PLAT_MAC

    output.code.page=65001

    Bitnugger [et al.] hat sich in diversen lesenswerten Beiträgen bzgl. Kodierung usw. buchstäblich die Finger wund geschrieben ;).

    Es verbleibt aber immer noch eine "Grauzone" :

    Bei den Kodierungen UTF-16BE und UTF-16LE (auch UTF-32BE/LE) muss die Byte-Reihenfolge angegeben werden, da die Zeichen jeweils mindestens entweder in 16 oder 32 Bit großen Werten kodiert sind und damit mehrere Bytes benötigen. Das Byte Order Mark (BOM) kennzeichnet dabei, in welcher Reihenfolge die Bytes ausgewertet werden müssen (BE=Big-Endian , LE=Little-Endian).

    Bei UTF-8 ist ein BOM nicht zwingend erforderlich !

    Folge : Eine "ANSI"-kodierte Datei lässt sich nicht so ohne weiteres von einer "UTF-8 ohne BOM"-kodierten Datei unterscheiden.

    Soviel in Kürze zum techn. Hintergrund.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Hallo Musashi,

    in der Datei "SciTEGlobal.properties" steht folgendes:

    Spoiler anzeigen

    # Internationalisation

    #NewFileEncoding=CodePage/UTF8BOM/UTF8/UTF16BE/UTF16LE # Only available in SciTE4AutoIt3 version

    #~ Enhance function of auto checking utf8: providing two methods

    # detect utf8 and add BOM automatically Credits to SciTE-RU

    #~ utf8.auto.check=1

    # detect utf8 and do not add BOM

    #~ utf8.auto.check=2

    # detect ascii high characters and if none found set default encoding to UTF8 and add BOM

    #~ utf8.auto.check=3

    # detect ascii high characters and if none found set default encoding to UTF8 and do not add BOM

    #utf8.auto.check=4

    # Japanese input code page 932 and ShiftJIS character set 128

    #code.page=932

    #character.set=128

    # Unicode

    #~ code.page=65001

    code.page=0

    #character.set=204

    #command.discover.properties=python /home/user/FileDetect.py "$(FilePath)"

    # Required for Unicode to work on GTK+:

    #LC_CTYPE=en_US.UTF-8

    if PLAT_WIN

    output.code.page=0

    if PLAT_GTK

    output.code.page=65001

    if PLAT_MAC

    output.code.page=65001

    In der Datei "SciTEUser.properties" stehen die folgenden Zeilen:

    code.page=0

    output.code.page=0

    Ich verwende folgende SciTE-Version:

    Version 4.1.0

    Jun 27 2018

    MfG:

    BigRox