Umlaute in Skripten werden nicht richtig angezeigt

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.

Titel

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:

Der Aufruf zum Erstellen der Nachricht lautet also:

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.

cmd01

cmd02

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.

script01

script02

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

und der IDERI note Client zeigt die Sonderzeichen wieder korrekt an.

chcp01

chcp02

 

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.

NPPPDanach 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.

NP

 

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.