ä ö ü ß in Batch schreiben

8 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

nimm notepad++, dann wenn du die ü's und ö's etc. brauchst, stellst du bei "Sprachen" auf "MS-DOS-Stil".

zB.: (bis jetzt war bei "Sprachen" - "Batch" ausgewählt. Nun wählst Du "MS-DOS-Stil")

...
@echo dankeschön Herr Müller, dass Sie das Übungsbeispiel sind.
...

schreibst das echo, speicherst (ctrl + s) und führst die batch mal aus.

..mit notepad++ kann man im ASCII Format bearbeiten. - dabei geht zwar die farbliche unterstützung verloren, aber man kann ja erst alles in "Batch" schreiben und am schluss alle Umlaute etc. mit MS-DOS-Stil ändern und speichern.

lg

ok danke es funktioniert :D

0

Solche Probleme entstehen, wenn Konsole und Editor ein jeweils unterschiedliches Codierungsschema verwenden, d.h., wenn sie die Schriftzeichen durch unterschiedliche Bitmuster repräsentieren. Was die ASCII-Zeichen angeht, die zum Schreiben des US-amerikanischen Englisch ausreichen, stimmen die Tabellen miteinander überein. Bei den Nicht-ASCII-Zeichen, wie ä ö ü und ß es sind, gibt es Unterschiede. Dasselbe Bitmuster steht da für ganz verschiedene Schriftzeichen.

Mit dem Befehl chcp (change code page) kannst Du (a) abfragen, welche Windows-Codepage die Konsole gerade verwendet, und (b) einstellen, welche sie verwenden soll. Angezeigt wird dann bei uns in der Regel die DOS-Codepage 850. Du kannst mit chcp 1252 umschalten auf Windows-Codepage 1252, (die weitgehend der Norm ISO 8859-1 entspricht). Oft löst das schon das Problem.

Leider ist wegen der vielen Codierungen, die es gibt, auch die Zahl der möglichen Inkompatibilitäten, die auftreten können, groß. Wenn man die Batch-Datei in UTF-8 codiert abspeichert (Programmierer stellen ihren Editor oft so ein) dann muß entsprechend die Konsole auf UTF-8 eingestellt werden, damit sie die Umlaute richtig wiedergibt. Mit chcp 65001 sollte das klappen.

Guter Artikel über Schriftcodierung:

http://www.joelonsoftware.com/articles/Unicode.html

Es lohnt, sich einige der Codetabellen anzuschauen. Man sieht dann, daß die Umlaute und andere nichtamerikanische Schriftzeichen an jeweils verschiedenen Plätzen in der Numerierung stehen. In der Wikipedia hierzu relevant:

  • Zeichensatztabelle
  • Codepage_850
  • ISO_8859-1 (Siehe Abschnitt: Windows-1252)
  • UTF-8

Hab mir vorlangen was zusammen gesucht...

set ä=„
set ö=”
set ü=
set Ä=Ž
set Ö=™
set Ü=š
set ß=á

Achtung bei "ü" ist ein bug, er kann bei manchen systemen im browser das zeichen dafür nicht erkennen, aber wenn man es kopiert, sieht man es im entspr. editor... ;)

Dann kannst du beispielsweise die umlaute so ausgeben:

@echo off
echo %ä% %ö% %ü% %Ä% %Ö% %Ü% %ß%
pause

hoffe ich konnte dir helfen ;)

Da gäbe es auch die einfache Variante, am Anfang der Datei folgenden Code einzugeben:

chcp 1252
set ae=ä
set oe=ö
set ue=ü
chcp 850
cls

Dadurch kann man dann im Rest der Datei einfach folgendes eingeben:

echo %ae% %oe% %ue%

Als Ausgabe erhält man in diesem Falle

ä ö ü

Der oben genannte vorgang kann übrigends mit jedem Zeichen gemacht werden...

Ich hoffe, dass ich dir helfen konnte!

MfG, FisheyLP :D

char 132 = ä
char 148 = ö
char 129 = ü
char 142 = Ä
char 153 = Ö
char 154 = Ü
char 225 = ß

Wenn du alt gedrückt hältst und diese Zahlen eingibst, können Umlaute ausgegeben werden.

Oder auch nicht, ich habe irgendwo einen Fehler gemacht...

Es ist definitiv möglich.

Hast du einen C++ -Compiler zur Hand, mit dem ist das nämlich leicht herauszufinden.

#include<iostream>
using namespace std

int main(void){

    char c[3];
    while(true){

        cin>>c;
        if(c[1]!=0)return;//Bricht Programm bei mehr als einem Zeichen ab
        cout<<(int)c[0];//Gibt die Nummer des Buchstabens aus

    }

}
0

Die Zuordnungen, die Du hier zeigst, gelten mit Codepage 850. Schaltet man stattdessen Codepage 1252 ein, dann gilt:

char 228 = ä
char 246 = ö
char 252 = ü
char 196 = Ä
char 214 = Ö
char 220 = Ü
char 223 = ß
0