none
In VBS-Datei, die per Batch aufgerufen wird, Umlaute darstellen? RRS feed

  • Frage

  • >%temp%\test.vbs (

      echo WScript.Quit _

      echo    MsgBox("Es folgen Umlaute:" ^& vbCrLf ^& "%Ä ä Ü ü Ö ö" ^& vbCrLf ^& "%Die Zeichen werden nicht korrekt im Popupfenster angezeigt", _

      echo    vbOKCancel Or vbDefaultButton2 Or vbExclamation, _

      echo    "Dies und das"^)

    )

    wscript %temp%\test.vbs

    Wenn ich diese Datei nun per Doppelklick aufrufe, werden statt Ä, Ü, Ö etc gar keine Zeichen angezeigt oder (wenn ich in Notepad++ aps Sprache "MS-Dos-Style" oder "Batch" auswähle) kryptische Zeichen. Mit Notepad++ kann ich mit dem MS-DOS-Style zwar im normalen CMD-Fenster Ä, Ü, Ö etc anzeigen lassen, im Script-Host-Popup funktioniert dies aber nicht. Hat jemand hierfür einen Lösungsansatz für mich?

    Sonntag, 18. Oktober 2020 15:14

Antworten

  • Moin,

    ich habe mir das nochmal angeschaut und verstehe jetzt etwas besser, was Du versuchst: Du generierst scheinbar die VBS-Datei mit der Batch-Datei "on the fly".

    Dann wird auf modernen Windows-Versionen folgendes passieren:

    • wenn Deine Batch-Datei in UTF-8 gespeichert ist, wird auch die resultierende VBS-Datei UTF-8 sein. Diese VBS-Datei produziert bei Nicht-ASCII-Zeichen aber nur Hieroglyphen, weil sie vom WSH dennoch als ANSI interpretiert wird.
    • wenn Deine Batch-Datei in ANSI gespeichert ist, wird auch die resultierende VBS-Datei ANSI sein.

    Insofern ist die einfachste Lösung, das Batch-Script nach ANSI zu konvertieren.


    Evgenij Smirnov

    http://evgenij.smirnov.de

    Montag, 19. Oktober 2020 09:19
  • Ja das habe ich übersehen.
    Eine CMD-Box arbeitet standardmäßig im OEM-Zeichensatz (i.d.R. 850).
    Erstellst du nun deine BAT/CMD ganz normal im Editor, erfasst du natürlich im Zeichensatz ANSI 1252.

    Bei der Ausführung einer BAT/CMD wird der Text "as is" verarbeitet, eine automtische Zeichensatzkonvertierung wird nicht durchgeführt.

    Wenn dein Script also in 1252 erfasst ist, im Editor also OK aussieht, kannst du an den Anfang deines Scripts ein

    chcp 1252

    enfügen. Dann arbeitet die CMD_Box nun in ANSI und deine Sonderzeichen werden nun korrekt interpretiert.

    Siehe auch hier:
    https://www.libe.net/Robocopy-Umlaute

    Montag, 19. Oktober 2020 09:46

Alle Antworten

  • Moin,

    vielleicht postest Du den konkreten Code-Ausschnitt als Code.

    Das Folgende funktioniert nämlch:

    MsgBox "Müßiggänger beömeln sich süß" & vbNewLine & "MÜßIG!", vbOKOnly, "Über den ömeligen Müßiggang"

    hier:


    Evgenij Smirnov

    http://evgenij.smirnov.de


    Sonntag, 18. Oktober 2020 16:56
  • vielleicht postest Du den konkreten Code-Ausschnitt als Code.

    ... und beim nächsten Mal vielleicht dann auch noch ins richtige Forum. VBscript Powershell   ;-)


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Sonntag, 18. Oktober 2020 17:20
  • ... und beim nächsten Mal vielleicht dann auch noch ins richtige Forum. 

    Träumer ;-P

    Evgenij Smirnov

    http://evgenij.smirnov.de

    Sonntag, 18. Oktober 2020 17:23
  • VBS läuft nicht über MS-Dos (CMD-Box) sondern mit deiner normalen Windows-Codepage (Deutsch 1252).
    Pflege dein Script und speichere es als ANSI-Text.
    Montag, 19. Oktober 2020 07:01
  • Moin,

    ich habe mir das nochmal angeschaut und verstehe jetzt etwas besser, was Du versuchst: Du generierst scheinbar die VBS-Datei mit der Batch-Datei "on the fly".

    Dann wird auf modernen Windows-Versionen folgendes passieren:

    • wenn Deine Batch-Datei in UTF-8 gespeichert ist, wird auch die resultierende VBS-Datei UTF-8 sein. Diese VBS-Datei produziert bei Nicht-ASCII-Zeichen aber nur Hieroglyphen, weil sie vom WSH dennoch als ANSI interpretiert wird.
    • wenn Deine Batch-Datei in ANSI gespeichert ist, wird auch die resultierende VBS-Datei ANSI sein.

    Insofern ist die einfachste Lösung, das Batch-Script nach ANSI zu konvertieren.


    Evgenij Smirnov

    http://evgenij.smirnov.de

    Montag, 19. Oktober 2020 09:19
  • Ja das habe ich übersehen.
    Eine CMD-Box arbeitet standardmäßig im OEM-Zeichensatz (i.d.R. 850).
    Erstellst du nun deine BAT/CMD ganz normal im Editor, erfasst du natürlich im Zeichensatz ANSI 1252.

    Bei der Ausführung einer BAT/CMD wird der Text "as is" verarbeitet, eine automtische Zeichensatzkonvertierung wird nicht durchgeführt.

    Wenn dein Script also in 1252 erfasst ist, im Editor also OK aussieht, kannst du an den Anfang deines Scripts ein

    chcp 1252

    enfügen. Dann arbeitet die CMD_Box nun in ANSI und deine Sonderzeichen werden nun korrekt interpretiert.

    Siehe auch hier:
    https://www.libe.net/Robocopy-Umlaute

    Montag, 19. Oktober 2020 09:46