Parameterübergabe mit Umlauten und Sonderzeichen

  • Hallo Leute
    Ich habe zum Thema: leider nicht hier im Forum gefunden

    Ich habe folgendes Problem:
    Bei der Parameterübergabe und auslesen mit Hilfe vom "$CmdLine Array " gibt es Probleme mit Umlauten. Diese werden nicht übernommen. (MsgBox, Konsole)

    Anbei mein "Testscript" + eine Batchdatei zum testen der Parameter

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    AutoIt Version: 3.3.0.0
    Author: gongoscho

    [/autoit] [autoit][/autoit] [autoit]

    Script Function:
    Kleines Script zum Testen der Parameterübergabe in AutoIt

    [/autoit] [autoit][/autoit] [autoit]

    #ce ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    #Region AutoIt
    #AutoIt3Wrapper_Change2CUI=y
    #EndRegion

    [/autoit] [autoit][/autoit] [autoit]

    #Region Scripbeginn
    If $CmdLine[0] = 0 Then
    ConsoleWrite(@CRLF & " Parameterübergabe" & @CRLF & " =================" & @CRLF & " Es wurden keine Parameter übergeben!" & @CRLF)
    Sleep(6000) ;6 sec. Pause..
    Exit
    Else
    ConsoleWrite(@CRLF & " Parameterübergabe" & @CRLF & " =================" & @CRLF & @CRLF)
    For $i = 1 To $CmdLine[0] Step +1
    ConsoleWrite(" Parameter " & $i & @CRLF & " " & $CmdLine[$i] & @CRLF & @CRLF)
    Next
    Sleep(6000) ;6 sec. Pause..
    EndIf
    #EndRegion
    Exit

    [/autoit]
    Code
    :: Batchdatei zum testen der Parameterübergabe von AutoIt
    :: ======================================================
    ::
    :: parameter.exe "Hallo ich bin Parameter 1" "%/()§$%ÄÖÜÖ" "3te Übergabe"
    ::
    
    
    @echo off & cls
    parameter.exe "Hallo ich bin Parameter 1" "%/()§$%ÄÖÜÖ" "3te Übergabe"
    exit


    Bei der Übergabe von Umlauten und Sonderzeichen bekomme ich folgendes Ergebnis:
    parameter.exe "Hallo ich bin Parameter 1" "%/()§$%ÄÖÜÖ" "3te Übergabe"

    Zitat von AutoIt

    Parameter³bergabe
    =================

    Parameter 1
    Hallo ich bin Parameter 1

    Parameter 2
    -═_═

    Parameter 3
    3te _bergabe


    Danke für eure Hilfe

    lg,
    gongo

    Einmal editiert, zuletzt von gongoscho (10. Januar 2009 um 21:22)

    • Offizieller Beitrag

    Hi,

    das ist ein Codepage Problem.

    Probier mal

    Spoiler anzeigen
    [autoit]

    #Region Scripbeginn
    If $CmdLine[0] = 0 Then
    ConsoleWrite(@CRLF & " Parameterübergabe" & @CRLF & " =================" & @CRLF & " Es wurden keine Parameter übergeben!" & @CRLF)
    Else
    ConsoleWrite(@CRLF & " Parameterübergabe" & @CRLF & " =================" & @CRLF & @CRLF)
    For $i = 1 To $CmdLine[0] Step +1
    ConsoleWrite(" Parameter " & $i & @CRLF & " " & ANSI2OEM($CmdLine[$i]) & @CRLF & @CRLF)
    Next
    Sleep(60 * 1000)
    EndIf
    #EndRegion Scripbeginn
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Func ANSI2OEM($text)
    $text = DllCall('user32.dll','Int','CharToOem','str',$text,'str','')
    Return $text[2]
    EndFunc

    [/autoit]

    Mega

  • Hallo,
    danke für die Antworten.

    Ja verwende die letzte Version von AutoIt & SciTE, aber leider funktioniert es noch immer nicht.

    lg,
    gongo

    *Edit*
    Es funktioniert doch mit der "ANSI2OEM Funktion", das Problem war die Batchdatei (War ja klar ;))

    Getestet mit einem AutoIt-Script:

    [autoit]

    Run('parameter.exe "Hallo ich bin Parameter 1" "%/()§$%ÄÖÜÖ" "3te Übergabe"',@ScriptDir)

    [/autoit]

    Danke Leute! :thumbup:

    lg,
    gongo

    Einmal editiert, zuletzt von gongoscho (10. Januar 2009 um 21:21)