VBScript ReadLine() Probleme mit Umlauten

  • VBScript

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von KNKA.

    VBScript ReadLine() Probleme mit Umlauten

    Hallo liebe Community,

    ich habe ein kleines Problem was ich an Hand folgenden Codes beschreiben möchte:


    Visual Basic-Quellcode

    1. while (paramFirstName = "")
    2. wscript.echo "Please provide a Surname: "
    3. paramFirstName = WScript.StdIn.Readline()
    4. wend


    Ich lese von der Standarteingabe, also der CMD einen String ein.
    Sobald ich dort ein Sonderzeichen (ä,ü,ö) einfüge, speichert es das Skript intern als "?" ab.

    Gebe ich z.B. den Namen "Müller" ein und gebe den String wieder aus, erhalte ich "M?ller".

    Ich habe Ewigkeiten damit verbracht via Google das Problem zu lösen, das einzige was ich dort aber gefunden habe war der Lösungsansatz wenn man z.B. aus einer Textdatei etwas in ein VBScript einlesen möchte, dass beim StreamWriter Objekt die Option "System.Text.Encoding.Default". gesetzt werden muss, was aber bei meinem ReadLine() nicht funktioniert.

    Ich vermute mal den Wald von lauter Bäumen nicht zu sehen und hoffe auf einen Lösungsansatz der Community!

    Übrigens wenn ich mein Skript mit einem Parameter Aufrufe... z.B.

    Quellcode

    1. cscript meinSkript.vbs /s:Müller


    dann klappt es wunderbar!

    Vielen Dank =)

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Noch ein kleiner Nachtrag:

    Wenn ich einen String direkt im Skript anlege, z.B.:

    Visual Basic-Quellcode

    1. dim test
    2. test="äöü"


    und die Variable wieder ausgebe:

    Visual Basic-Quellcode

    1. WScript.Echo test


    funktioniert das wunderbar!

    Es muss also daran liegen, wenn ein Umlaut über die Kommandozeile eingelesen wird, dass er da irgendwie Probleme bekommt.

    @ Eierlein

    Kommt hier vllt. deine Aussage ins Spiel mit Ansi, OEM, UTF8? Vielleicht etwas in der CMD selbst umstellen!!?
    Als vorab Hilfe:

    Visual Basic-Quellcode

    1. wscript.echo "Please provide a Surname: "
    2. paramFirstName = WScript.StdIn.Readline()
    3. paramFirstName = replace(paramFirstName, Chr(129), "ü")
    4. paramFirstName = replace(paramFirstName, chr(132), "ä")
    5. paramFirstName = replace(paramFirstName, chr(148), "ö")
    6. paramFirstName = replace(paramFirstName, chr(129), "ü")
    7. paramFirstName = replace(paramFirstName, chr(142), "Ä")
    8. paramFirstName = replace(paramFirstName, chr(153), "Ö")
    9. paramFirstName = replace(paramFirstName, chr(154), "Ü")
    10. paramFirstName = replace(paramFirstName, chr(225), "ß")
    11. wscript.Echo paramFirstName
    Dann versuch's mal damit:

    Visual Basic-Quellcode

    1. WScript.echo "Please provide a Surname: "
    2. paramFirstName = WScript.StdIn.Readline()
    3. paramFirstName = Replace(paramFirstName, Chr(132), Chr(228)) ' "ä")
    4. paramFirstName = Replace(paramFirstName, Chr(148), Chr(246)) ' "ö")
    5. paramFirstName = Replace(paramFirstName, Chr(129), Chr(252)) ' "ü")
    6. paramFirstName = Replace(paramFirstName, Chr(142), Chr(196)) ' "Ä")
    7. paramFirstName = Replace(paramFirstName, Chr(153), Chr(214)) ' "Ö")
    8. paramFirstName = Replace(paramFirstName, Chr(154), Chr(220)) ' "Ü")
    9. paramFirstName = Replace(paramFirstName, Chr(225), Chr(223)) ' "ß")
    10. WScript.Echo paramFirstName
    11. MsgBox(paramFirstName)


    Mit welchen DOS-Editor hast du die replace-Sache bearbeitet?
    Ich muss alles zurück nehmen! Mit Hilfe der replace Funktionen hat es doch noch funktioniert!

    Jedoch war der "ä" Wert falsch...

    Die richtige Zeile lautet: paramFirstName = replace(paramFirstName, chr(132), "ä")

    Vielen Dank für die Hilfe =) :!: :thumbsup: