Wer mit den IDERI note Commandline Tools aus der CMD direkt Nachrichten versendet, sollte keine Probleme haben Umlaute korrekt darzustellen. Wer hingegen ein Skript mit Notepad erstellt und darin eine Nachricht mit Umlauten verfasst hat, wird vermutlich über das Problem gestolpert sein, dass die Umlaute und auch manche Sonderzeichen nicht korrekt dargestellt werden.
Dieser Beitrag verwendet als Beispiel die IDERI note Commandline Tools. Der Lösungsansatz kann jedoch auch bei anderen Skripten angewandt werden, bei denen es zu Problemen mit der Anzeige von Umlauten kommt.
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:
1Umlautetest:
2
3ö Ö ä Ä ü Ü ß
4
5!§ $ % / ( ) = ?
6
7´ ` ² ³ { [ ] }
8
9+ * # ' @ € ^ °
Der Aufruf zum Erstellen der Nachricht lautet also:
1"C:\Program Files (x86)\ideri\ideri Note Command Line\inotecmd.exe" "Umlautetest:\n\n ö Ö ä Ä ü Ü ß ! \n § $ % / ( ) = ? \n ´ ` ² ³ { [ ] } \n + * # ' @ € ^ °" "+0" "+01/00" jeder INFORMATION id-dc01
Die IDERI note Commandline Tools sind hierbei auf einem Server 2012 R2 x64 Betriebssystem installiert. Die Nachricht ist ab sofort gültig und besitzt eine Gültigkeitsdauer von einer Minute. Empfänger ist die Gruppe „jeder“ und erstellt wird die Nachricht auf dem Server „id-dc01“. „n“ erzwingt einen Zeilenumbruch im Text.
Nachricht aus CMD
Schauen wir uns also an was passiert, wenn die Nachricht aus der CMD direkt erstellt wird.
Das Ergebnis ist zufriedenstellend. Alle Zeichen und Umlaute werden korrekt dargestellt.
Nachricht aus Skript
Doch versuchen wir nun den selben Aufruf aus einem Skript heraus.
Man sieht, dass ca. die Hälfte der Sonderzeichen und Umlaute nicht korrekt dargestellt werden! Doch wie kann man das nun umgehen?
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
1chcp 1252
2
3"C:\Program Files (x86)\ideri\ideri Note Command Line\inotecmd.exe" "Umlautetest:\n\n ö Ö ä Ä ü Ü ß ! \n § $ % / ( ) = ? n ´ ` ² ³ { [ ] } \n + * # ' @ € ^ °" "+0" "+01/00" jeder INFORMATION id-dc01
und der IDERI note Client zeigt die Sonderzeichen wieder korrekt an.
Alternative
Mit dem kostenlosen OpenSource Editor Notepad++ kann die zu verwendende Kodierung bereits vor Erstellung des Skripts eingestellt werden. So kann definiert werden, dass das Skript den gleichen Zeichensatz wie die Kommandozeile verwenden soll.
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.