merkwürdige Zeichen - _ArraySearch

  • Hallo,

    mit

    _FTP_ListToArray

    lasse ich mir den Inhalt eines FTP-Servers ausgeben.

    mit

    _ArraySearch

    durchsuche ich die Rückgabewerte des FTP-Servers, ob eine Datei vorhanden ist

    Ich möchte herausfinden, ob die Datei "Testdatei - für AutoIt.au3" auf dem FTP-Server liegt.

    _FTP_ListToArray gibt mir den Dateinamen als "Testdatei - für AutoIt.au3" zurück.

    Wie kann ich mir mit _FTP_ListToArray die Dateinamen und Pfade mit deutschen Umlauten zurückgeben?

    Falls das nicht geht - wie konvertiere ich "Testdatei - für AutoIt.au3" in Testdatei - für AutoIt.au3", um mit _ArraySearch prüfen zu können, ob die Datei bereits auf dem FTP-Server liegt?

    Gibt es für obiges Ziel noch einen besseren Weg?

    PS: am liebsten würde ich das komplette Array so konvertieren, dass es Umlaute enthält.

    Einmal editiert, zuletzt von Banana_2_Day (25. August 2019 um 15:02)

  • Guck mal ob dir das weiter hilft:

    ConsoleWrite(BinaryToString(StringToBinary('Testdatei - für AutoIt.au3'), 1) & @CRLF)

    Ausgabe:

    Testdatei - für AutoIt.au3

    Was mache ich falsch?

    Wenn es funktionieren würde, müsste ich mit der Befehlszeile jede Array-Zeile durchlaufen und das Ergebnis in ein neues Array schreiben? Oder gibt es einen besseren Weg, um ein Array zu konvertieren?

  • Das Flag am Ende kommt nicht hin, nimm UTF-8 (4) denn Umlaute gibt es im ANSI (1) nicht.

    Mein SciTE ist so eingestellt, dass Dateien als UTF-8 gespeichert und die Ausgaben als UTF-8 angezeigt werden. Deshalb hat mein Test-Script wohl auch mit 1 funktioniert.

    Dass es im ANSI keine Umlaute gibt, wäre mir aber neu... du meinst wohl OEM (850)?!

  • Das Flag am Ende kommt nicht hin, nimm UTF-8 (4) denn Umlaute gibt es im ANSI (1) nicht.


    Du musst das Array durchlaufen und den Inhalt des Indexes einfach mit der Umwandlung ersetzen, du brauchst kein neues Array zu erzeugen.

    Flag 4 hat funktioniert. Danke!

    Code
            For $i = 1 to $a_FTP[0]
                ToolTip ($a_FTP[$i])
                Sleep (1000)
                ToolTip ("")
            Next

    Das Array durchlaufen bekomme ich hin. Bin auf der Suche nach einem "Ersetzen-Befehl". Mal schauen, ob was im Forum steht. Suche ...

    2 Mal editiert, zuletzt von Banana_2_Day (25. August 2019 um 20:57)

  • Dass es im ANSI keine Umlaute gibt, wäre mir aber neu...

    Mir auch ;), siehe :

    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."

  • Ich denk bei ANSI immer an ASCII.

    Trotzdem sollte es nicht funktionieren, da ja der Umlaut mit zwei Bytes dargestellt wird, in ANSI ist aber nur ein Byte notwendig.

    StringToBinary wandelt mit dem Standardflag ANSI (1) um, d.h. damit deine Variante funktioniert, hättest du den String mit UTF-8 (4) konvertieren müssen,

    aber auch das klappt nicht, weil ja zwei separate Zeichen vorhanden sind und kein Umlaut.

  • Ich denk bei ANSI immer an ASCII.

    Habe ich mir gedacht ( Bitnugger sicher auch) ;)

    In der Sache hast Du aber natürlich recht.

    ConsoleWrite(BinaryToString(StringToBinary('Testdatei - für AutoIt.au3'), 1)  & @CRLF)

    ==> Konsole = Testdatei - für AutoIt.au3

    ConsoleWrite(BinaryToString(StringToBinary('Testdatei - für AutoIt.au3'), 4) & @CRLF)

    ==> Konsole = Testdatei - für AutoIt.au3

    Daher, wie üblich, lieber die Konstanten verwenden : $SB_ANSI statt 1 , $SB_UTF8 statt 4

    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 Bitnugger
    ich glaube, das liegt aber nur an deinen Einstellungen.
    Das gibt dir denn folgendes aus?

    Code
    MsgBox(0,"", BinaryToString(StringToBinary('Testdatei - für AutoIt.au3'), 1) & @CRLF & _
    BinaryToString(StringToBinary('Testdatei - für AutoIt.au3'), 4) & @CRLF & _
    BinaryToString(StringToBinary('Testdatei - für AutoIt.au3', 4), 4))

    Grüße autoiter

  • Soso... bei mir sieht es aber so aus:

    Hallo Bitnugger - ich glaube, das liegt aber nur an deinen Einstellungen.

    Das Verhalten hängt mit hoher Wahrscheinlichkeit von den jeweiligen Einstellungen ab !

    In meiner SciTEGlobal.properties steht :

    # Unicode

    #code.page=65001

    code.page=0

    (keine Ahnung, ob ich das mal geändert habe oder ob es sich um den Default handelt)

    In meiner SciTEUser.properties habe ich mal eingetragen (Settings sind akt. aber mit # deaktiviert) :

    # code.page=65001

    # output.code.page=65001

    Sobald ich die Settings aktiviere und die Datei speichere, werden sofort alle Umlaute (z.B. in den Kommentaren) verändert -> ü wird zu ü usw.

    Die Konsolenausgabe sieht dann aber auch so aus wie in Deinem Screenshot !

    Ich verspüre allerdings wenig Begeisterung, hier groß herumzuwerkeln.

    Das Thema Zeichenkonvertierung/-kodierung wird uns wahrscheinlich sowieso alle überleben 8o.

    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."

    3 Mal editiert, zuletzt von Musashi (27. August 2019 um 01:27) aus folgendem Grund: Zusatzfrage entfernt, da ich dafür ggf. einen eigenen Thread aufmache

  • code.page=0 ist Default, unter Windows ist das dann ANSI.

    Ich verspüre allerdings wenig Begeisterung, hier groß herumzuwerkeln.

    Na ja, so viel Aufwand ist das nun nicht. Ich habe mir dafür ein kleines Script geschrieben, um fremde/ältere Scripte (*.au3, *.lua) zu konvertieren, dass ich mit OHK aufrufe (Ctrl+Win, Ctrl+z).

    Code: ownhotkeys.properties
    #~ Ctrl+Win, Ctrl+Z
    own.mode.cmd.90=OHK.ConvertFileToUTF8()
    own.mode.descript.90=Ctrl+$(own.mode.indicator.descript), Ctrl+Z|Convert the current file to UTF-8 (*.au3 with BOM, *.lua without BOM)
    Code: SciTEUser.properties
    # Pfad für eigene Tools
    #~ user.tools.path=f:\AutoIt\AutoIt3_Tools
    user.tools.path=f:\\AutoIt\\AutoIt3_Tools
    
    # Pfad für eigene Lua-Scripte
    #~ lua.user.scripts.path=f:\AutoIt\AutoIt3_LuaScripts
    lua.user.scripts.path=f:\\AutoIt\\AutoIt3_LuaScripts
  • -> Zitat Musashi : "Ich verspüre allerdings wenig Begeisterung, hier groß herumzuwerkeln.

    -> Das Thema Zeichenkonvertierung/-kodierung wird uns wahrscheinlich alle überleben 8o."

    Na ja, so viel Aufwand ist das nun nicht.

    Stimmt, der Aufwand wäre nicht 'unmenschlich' :P, aber bei mir nicht zwingend erforderlich.

    • Quasi alle von mir verwendeten Community-UDF's sind i.d.R. in englisch und/oder ANSI.
    • Skripte aus dem Forum lese ich eh erst durch bevor ich sie einbinde. Finde ich dort falsch codierte Zeichen (selten), dann ändere ich sie manuell. Ich habe mal aus Interesse einige akt. Skripte von BugFix, water, Oscar usw. geprüft => alles ANSI.

    Ich habe haufenweise (firmen-)eigene Skripte, die von mir extrem dokumentiert wurden (deutsch) - falls man mal gegen den berühmten Baum fährt usw. ^^). Ein Umstellen der code.page von 0 auf 65001 bzw. Umkodieren würde mir nichts Wesentliches bringen.Die Aussage "Das Thema [...] wird uns wahrscheinlich sowieso alle überleben

    " bezog sich auch mehr auf Kodierung/Konvertierung/Maskierung i.a., denke z.B. mal an dieQuoted-Printable-Kodierung

    Völlig unabhängig davon sind Deine o.a. Skripte im Bedarfsfall aber sehr hilfreich :thumbup:.

    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."