Überblick
Zum Aufzeigen des Problems erstelle ich jeweils eine Nachricht direkt in der CMD und anschließend mit einem Skript, das unter Windows mit Notepad geschrieben wurde.
Der Nachrichtentext soll folgenden Inhalt haben:
Umlautetest:
ö Ö ä Ä ü Ü ß !
§ $ % / ( ) = ?
´ ` ² ³ { [ ] }
+ * # ' @ € ^ °
"C:\Program Files (x86)\ideri\ideri Note Command Line\inotecmd.exe" "Umlautetest:\n\n ö Ö ä Ä ü Ü ß ! \n § $ % / ( ) = ? \n ´ ` ² ³ { [ ] } \n + * # ' @ € ^ °" "+0" "+01/00" jeder INFORMATION id-dc01
Nachricht aus CMD
Nachricht aus Skript
Lösung
Das Problem tritt auf, da Notepad offensichtlich eine andere Codepage (Wikipedia – Zeichentabelle) verwendet als die Kommandozeile, die wiederum das Skript ausführt. Um genau zu sein verwendet die CMD die Codepage 850 und Notepad bei ANSI 1252.
Um die Sonderzeichen also wieder korrekt anzeigen zu lassen, muss einfach ein kleiner Befehl an den Anfang des Skripts gesetzt werden, der die zu verwendende Codepage definiert. Dieser Befehl lautet „chcp“ (Change Codepage) gefolgt von der gewünschten Codepagenummer.
Folglich lautet das Skript nun
chcp 1252
"C:\Program Files (x86)\ideri\ideri Note Command Line\inotecmd.exe" "Umlautetest:\n\n ö Ö ä Ä ü Ü ß ! \n § $ % / ( ) = ? n ´ ` ² ³ { [ ] } \n + * # ' @ € ^ °" "+0" "+01/00" jeder INFORMATION id-dc01
Alternative
Danach sollte man allerdings den Befehl „chcp 1252“ nicht mehr im Skript verwenden, da sonst genau das gegenteilige Ergebnis erreicht wird.
Öffnet man jedoch das Skript anschließend im Windows Notepad, werden die Sonderzeichen aufgrund der unterschiedlichen Codepages „falsch“ angezeigt.