molily: Kodierung im Windows Notepad

Hallo,

http://de.selfhtml.org/inter/sprache.htm#zeichensaetze schreibt:
»Wenn Sie mit MS Windows arbeiten, können Sie das selbst ausprobieren: erzeugen Sie unter MS Windows mit einem ANSI-Texteditor (z.B. Notepad) eine leere Datei: tippen Sie einfach so etwas wie "ääääööööüüüü" ein. Die Eingaben speichern Sie unter einem Dateinamen ab. Anschließend rufen Sie die DOS-Eingabeaufforderung auf und geben edit ein. Dann öffnet sich der DOS-Editor. Damit öffnen Sie die zuvor unter Windows abgespeicherte Datei. Nun können Sie sehen, was der Zusammenhang zwischen Byte und Zeichensatz ist (...)«

Dies ist offenbar eine Beschreibung von Windows 95 bzw. Windows 98. Wie sieht es bei Windows 2000 und XP aus? Meines Wissens kann dort das Notepad nicht nur die Kodierung Windows-1252. Ist es nach wie vor so, dass standardmäßig Windows-1252 verwendet wird? Trifft die Beschreibung des Vorgangs noch ungefähr zu, oder muss man ausdrücklich Windows-1252 einstellen? Ich erinnere mich an ein Notepad von Windows 2000, das standardmäßig UTF-8 verwendete, stimmt das?
Und wie sieht es mit edit.com aus, gibt es dieses Programm in neueren Windows-Versionen noch, und kann es nach wie vor nur Codepage 850?

Mathias

  1. Hallo Mathias,

    Wie sieht es bei Windows 2000 und XP aus? Meines Wissens kann dort das Notepad nicht nur die Kodierung Windows-1252. Ist es nach wie vor so, dass standardmäßig Windows-1252 verwendet wird?

    meine Notepads unter Win2k und XP bieten an:

    ANSI
      Unicode
      Unicode Big Endian
      UTF 8

    Dabei scheint ANSI die Kodierung der Ländereinstellung des jeweiligen Betriebssystems zu sein.

    Ich erinnere mich an ein Notepad von Windows 2000, das standardmäßig UTF-8 verwendete, stimmt das?

    Hier: ANSI.

    Und wie sieht es mit edit.com aus, gibt es dieses Programm in neueren Windows-Versionen noch,

    Ja.

    und kann es nach wie vor nur Codepage 850?

    Da mein Bedarf an edit.com gleich Null ist, kann ich es nicht sagen. Oberflächlich betrachtet sieht es so aus.

    hth Robert

  2. Hallo Mathias,

    du hast ganz richtig beobachtet: Notepad kann in Windows XP/2k mehr als bei den Vorgängerversionen. Mit der Codierung der verschiedenen ISO-Zeichensätze bin ich mir jetzt nicht mal so sicher - aber auf jeden Fall will das blöde Teil in Win2k plötzlich in Unicode (2 Bytes pro Zeichen) speichern. Wenn man da nicht aufpasst, hat man plötzlich eine Unicode-Textdatei, mit der viele andere Programme nix anfangen können.

    Und wie sieht es mit edit.com aus, gibt es dieses Programm in neueren Windows-Versionen noch, und kann es nach wie vor nur Codepage 850?

    Die alten DOS-basierten Programme haben sich noch nie um Zeichensätze und Codepages gekümmert. Sie verarbeiten ihren Text stur als ASCII (bzw. erweitertes PC-ASCII) und kümmern sich nicht darum, wie die Zeichen auf dem Bildschirm dargestellt werden. Das ist im reinen Textmodus Sache der Grafikkarte (die haben meistens CP437 fest einprogrammiert) oder - wenn man die entsprechende Unterstützung installiert hat - des DOS-ANSI-Treibers. In der DOS-Box von Windows übernimmt Windows dann diese Anpassung, und zwar nach der ISO-Codetabelle, die für DOS-Applikationen eingestellt ist. Das ist eine systemweite Geschichte, bei der die einzelne DOS-Anwendung wieder nichts zu melden hat.

    Schönen Tag noch,

    Martin

    1. Hallo Martin,

      [...] aber auf jeden Fall will das blöde Teil in Win2k plötzlich in Unicode (2 Bytes pro
      Zeichen) speichern. Wenn man da nicht aufpasst, hat man plötzlich eine Unicode-Textdatei,
      mit der viele andere Programme nix anfangen können.

      Unicode ist nur ein Zeichensatz. Meinst du UTF-16? Das waere ein typisches 2-Byte-Encoding.
      UTF-8 schwankt zwischen 1 und 6 Byte.

      Grüße,
       CK

      --
      Das Leben ist wie ein Kartenspiel: was dir gegeben wurde, ist vorbestimmt. Doch wie du damit spielst, ist deine Entscheidung.
      http://wwwtech.de/
      1. Moin Christian,

        Unicode ist nur ein Zeichensatz. Meinst du UTF-16? Das waere ein typisches 2-Byte-Encoding.

        Vermutlich meine ich UTF-16, aber so genau kenne ich die Feinheiten nicht. Notepad nennt es einfach nur "Unicode", und ich kriege 'ne Datei mit lauter Nullbytes zwischen den Zeichen, die ich nirgends gebrauchen kann. Also offensichtlich eine 2Byte-Codierung.

        UTF-8 schwankt zwischen 1 und 6 Byte.

        Huch? Und ich dachte, die 8 stünde hier für 8bit - zur Unterscheidung von UTF-16 mit 16bit.

        Verregnete Grüße,

        Martin

        1. Hi,

          UTF-8 schwankt zwischen 1 und 6 Byte.
          Huch? Und ich dachte, die 8 stünde hier für 8bit - zur Unterscheidung von UTF-16 mit 16bit.

          Wie kodierst Du die vielen Tausend Zeichen, die Unicode enthält, in 8 Bit (damit sind ja nur 256 verschiedene Bit-Kombinationen möglich)?
          Die (derzeit?) höchste Zeichennummer ist 0x10FFFD - das ist nicht mal in 16 Bit direkt kodierbar.

          Die 8 in UTF-8 steht dafür, daß die kleinste Einheit aus 8 Bit besteht, nicht dafür, daß für jedes Zeichen genau 8 Bit zur Verfügung stehen.

          Bei UTF-16 besteht die kleinste Einheit aus 16 Bit - Zeichen bestehen also (theoretisch) aus 16, 32, 48, 64 ... bits - praktisch kommen meines Wissens derzeit nur 16 und 32 bit (also 2 bzw. 4 "Bytes" vor) - wobei die Zeichen mit 32 bits sehr selten genutzt werden dürften, so daß im Normalfall die Gleichung 1 Zeichen = 2 Byte stimmen dürfte (wenn man von BOM absieht).

          cu,
          Andreas

          --
          Warum nennt sich Andreas hier MudGuard?
          Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
          1. Hallo,

            Wie kodierst Du die vielen Tausend Zeichen, die Unicode enthält, in 8 Bit (damit sind ja nur 256 verschiedene Bit-Kombinationen möglich)?
            Die (derzeit?) höchste Zeichennummer ist 0x10FFFD - das ist nicht mal in 16 Bit direkt kodierbar.

            Deswegen hatte ich auch bisher vermutet, UTF-8 sei mit 8bit pro Zeichen eine Untermenge von Unicode.

            Die 8 in UTF-8 steht dafür, daß die kleinste Einheit aus 8 Bit besteht, nicht dafür, daß für jedes Zeichen genau 8 Bit zur Verfügung stehen.

            Aha, danke!

            Bei UTF-16 besteht die kleinste Einheit aus 16 Bit - Zeichen bestehen also (theoretisch) aus 16, 32, 48, 64 ... bits - praktisch kommen meines Wissens derzeit nur 16 und 32 bit (also 2 bzw. 4 "Bytes" vor) - wobei die Zeichen mit 32 bits sehr selten genutzt werden dürften, so daß im Normalfall die Gleichung 1 Zeichen = 2 Byte stimmen dürfte (wenn man von BOM absieht).

            Okay, das habe ich soweit begriffen.
            Aber ich habe auch nie behauptet, dass ich über Unicode Bescheid weiß. Im Gegenteil, das Thema ist für mich noch weitgehend mysteriös.
            Danke für die kleine Nachhilfe,

            Martin

    2. Hi,

      aber auf jeden Fall will das blöde Teil in Win2k plötzlich in Unicode (2 Bytes pro Zeichen) speichern.

      bei XP ist zum Glück ANSI voreingestellt.

      Die alten DOS-basierten Programme haben sich noch nie um Zeichensätze und Codepages gekümmert. Sie verarbeiten ihren Text stur als ASCII (bzw. erweitertes PC-ASCII) und kümmern sich nicht darum, wie die Zeichen auf dem Bildschirm dargestellt werden. Das ist im reinen Textmodus Sache der Grafikkarte (die haben meistens CP437 fest einprogrammiert) oder - wenn man die entsprechende Unterstützung installiert hat - des DOS-ANSI-Treibers.

      Und der hatte, wenn ich mich recht entsinne, standardmäßig nicht mehr die Codepage 437 verwendet. Ich weiß noch, daß ich in der config.sys früher immer die 437 angeben mußte, um die netten IBM-Grafikzeichen z.B. für Rahmen angezeit zu bekommen. Im reinen Textmodus konnten auch gar keine erweiterten Zeichensätze verwendet werden, da für jedes Zeichen nur ein Byte zur Verfügung stand, welches direkt in den Speicherbereich der Grafikkarte kopiert wurde. Der erweiterte Speicherbereich der "moderneren" Grafikkarten diente damals im Textmodus zum schnellen Umschalten verschiedener Bildschirme - ich hatte ihn (bei 512KB RAM verständlich) z.B. als Zwischenspeicher für "Screenshots" mißbraucht.

      Übrigens gibt es in XP nicht nur Notepad und EDIT - auch EDLIN ist noch dabei :-)

      freundliche Grüße
      Ingo

      1. Hallo Ingo,

        aber auf jeden Fall will das blöde Teil in Win2k plötzlich in Unicode (2 Bytes pro Zeichen) speichern.
        bei XP ist zum Glück ANSI voreingestellt.

        Vernünftig. Grundsätzlich ziehe ich 2k gegenüber XP vor, aber in diesem Punkt hat XP wohl die Nase vorn.

        [...] DOS-ANSI-Treiber
        Und der hatte, wenn ich mich recht entsinne, standardmäßig nicht mehr die Codepage 437 verwendet. Ich weiß noch, daß ich in der config.sys früher immer die 437 angeben mußte, um die netten IBM-Grafikzeichen z.B. für Rahmen angezeit zu bekommen.

        Ja, das stimmt. Deshalb hatte ich diesen -aus meiner Sicht eher lästigen- Treiber nie installiert, außer vielleicht mal zum Testen.

        Übrigens gibt es in XP nicht nur Notepad und EDIT - auch EDLIN ist noch dabei :-)

        :))

        freundliche Grüße

        Ebenso - und Mahlzeit!

        Martin

    3. Hallo,

      danke für die Infos.

      du hast ganz richtig beobachtet: Notepad kann in Windows XP/2k mehr als bei den Vorgängerversionen. Mit der Codierung der verschiedenen ISO-Zeichensätze bin ich mir jetzt nicht mal so sicher

      Hm, wer redet denn von ISO-Zeichensätzen?

      aber auf jeden Fall will das blöde Teil in Win2k plötzlich in Unicode (2 Bytes pro Zeichen) speichern.

      Also ist standardmäßig »Unicode« vorausgewählt? Kannst du eventuell ein Screenshot machen oder die Benennung des Dropdown-Feldes nennen, sodass ich die Erklärung erweitern kann (»wählen Sie gegebenenfalls 'ANSI'« o.ä.)?

      Die alten DOS-basierten Programme haben sich noch nie um Zeichensätze und Codepages gekümmert. Sie verarbeiten ihren Text stur als ASCII (bzw. erweitertes PC-ASCII) und kümmern sich nicht darum, wie die Zeichen auf dem Bildschirm dargestellt werden. Das ist im reinen Textmodus Sache der Grafikkarte (die haben meistens CP437 fest einprogrammiert) oder - wenn man die entsprechende Unterstützung installiert hat - des DOS-ANSI-Treibers. In der DOS-Box von Windows übernimmt Windows dann diese Anpassung,

      Das erscheint mir schlüssig. Ist diese Anpassung ein Novum in 2k/XP? 95/98/ME machen es wie gesagt nicht.

      und zwar nach der ISO-Codetabelle, die für DOS-Applikationen eingestellt ist. Das ist eine systemweite Geschichte, bei der die einzelne DOS-Anwendung wieder nichts zu melden hat.

      Was meinst du mit »ISO-Codetabelle, die für DOS-Applikationen eingestellt ist«? Windows-1252?
      Was passiert genau, wenn man die in SELFHTML beschriebenen Schritte ausführt? Umlaute als »ANSI« – das bedeutet in dem Fall Windows-1252 – mit dem Notepad speichern und diese Datei mit edit.com öffnen. Werden diese im edit.com richtig angezeigt? Ein im Notepad eingegebenes »ö« wird im edit.com von Windows 98 als »÷« dargestellt (anhand eines Vergleiches von CP850 und Windows-1252 ist das nachvollziehbar). Ein in edit.com eingegebenes »ö« wird im Notepad als »”« dargestellt (ebenfalls logisch). Ich frage mich jetzt, ob die besagte »Anpassung« in Windows 2000 und und XP bewirkt, dass edit.com ein Byte mit dem Wert 0xF6 tatsächlich als »ö« darstellt.

      Mathias

      1. Hi,

        Also ist standardmäßig »Unicode« vorausgewählt? Kannst du eventuell ein Screenshot machen oder die Benennung des Dropdown-Feldes nennen, sodass ich die Erklärung erweitern kann (»wählen Sie gegebenenfalls 'ANSI'« o.ä.)?

        unter XP  (in dieser Reihenfolge):
        ANSI
        Unicode
        Unicode Big Endian
        UTF-8

        Das ist im reinen Textmodus Sache der Grafikkarte (die haben meistens CP437 fest einprogrammiert) oder - wenn man die entsprechende Unterstützung installiert hat - des DOS-ANSI-Treibers. In der DOS-Box von Windows übernimmt Windows dann diese Anpassung,

        Das erscheint mir schlüssig. Ist diese Anpassung ein Novum in 2k/XP? 95/98/ME machen es wie gesagt nicht.

        Unter XP wird die DOS-Box grafisch angezeigt, während unter Windows98 im Vollbildmodus noch eine reine Textdarstellung im DOS-Modus erfolgte, die von Windows nicht beeinflußbar war.

        Ich frage mich jetzt, ob die besagte »Anpassung« in Windows 2000 und und XP bewirkt, dass edit.com ein Byte mit dem Wert 0xF6 tatsächlich als »ö« darstellt.

        gerade mal getestet: wird angezeigt wie (etwa) ¸ (also so eine Art geschwungenes Komma).

        freundliche Grüße
        Ingo

        1. Hallo Ingo,

          Also ist standardmäßig »Unicode« vorausgewählt? Kannst du eventuell ein Screenshot machen oder die Benennung des Dropdown-Feldes nennen, sodass ich die Erklärung erweitern kann (»wählen Sie gegebenenfalls 'ANSI'« o.ä.)?
          unter XP  (in dieser Reihenfolge):
          ANSI
          Unicode
          Unicode Big Endian
          UTF-8

          Danke, ich meinte aber eigentlich die Benennung des Feldes, die Optionen hatte srob ja schon genannt https://forum.selfhtml.org/?t=92073&m=554466. Also steht dort »Kodierung:« oder »Zeichensatz:« oder ähnliches davor?

          Ist diese Anpassung ein Novum in 2k/XP? 95/98/ME machen es wie gesagt nicht.
          Unter XP wird die DOS-Box grafisch angezeigt, während unter Windows98 im Vollbildmodus noch eine reine Textdarstellung im DOS-Modus erfolgte, die von Windows nicht beeinflußbar war.

          Meine Tests mit Windows 98 bezogen sich auf die Darstellung im Fenster. Ob im Vollbildmodus oder nicht, die Bytes wurden gemäß Codepage 850 dargestellt.

          Ich frage mich jetzt, ob die besagte »Anpassung« in Windows 2000 und und XP bewirkt, dass edit.com ein Byte mit dem Wert 0xF6 tatsächlich als »ö« darstellt.
          gerade mal getestet: wird angezeigt wie (etwa) ¸ (also so eine Art geschwungenes Komma).

          Huch, das kann ich mir gar nicht erklären. »¸« liegt ein Bytewert über dem erwarteten Ergebnis. Nur zur Sicherheit: Du hattest im Notepad auch »ö« und nicht »÷« eingegeben? Bei »÷« (0xF7 in Windows-1252) würde »¸« (0xF7 in Codepage 850) nämlich passen.
          Ansonsten muss edit.com wohl einen mir unbekannten Zeichensatz verwenden.

          Mathias

          1. Danke, ich meinte aber eigentlich die Benennung des Feldes, die Optionen hatte srob ja schon genannt https://forum.selfhtml.org/?t=92073&m=554466. Also steht dort »Kodierung:« oder »Zeichensatz:« oder ähnliches davor?

            Ah, Martins Screenshot zeigt »Codierung«, dann erübrigt sich das wohl, sofern es bei dir nicht anders lautet.

            Mathias

          2. Hi,

            Also steht dort »Kodierung:« oder »Zeichensatz:« oder ähnliches davor?

            Weder noch. Windows verwendet lieber "Codierung" ;-) also wie in Martins Screenshot.

            Meine Tests mit Windows 98 bezogen sich auf die Darstellung im Fenster. Ob im Vollbildmodus oder nicht, die Bytes wurden gemäß Codepage 850 dargestellt.

            Ich kann es jetzt nicht mehr so leicht testen, aber im Vollbildmodus konnte AFAIK nur die im System eingestellte Codepage verwendet werden, während die grafische Fensterdarstellung zumindest etwas anderes ermöglichen könnte.

            Huch, das kann ich mir gar nicht erklären. »¸« liegt ein Bytewert über dem erwarteten Ergebnis. Nur zur Sicherheit: Du hattest im Notepad auch »ö« und nicht »÷« eingegeben? Bei »÷« (0xF7 in Windows-1252) würde »¸« (0xF7 in Codepage 850) nämlich passen.

            Ich hatte den dezimalen Code 246 in Notepad eingegeben, wo er als »÷« dargestellt wurde. Allerdings wurde dann in der Datei - wie ich jetzt gerade festgestellt habe - F7 gespeichert. Im EDIT wurde das Zeichen (F7) in dieser Datei dann als »¸« angezeigt. Übrigens stellt mein HEX-Editor (XVI32) im ASCII-Bereich F7 als »÷« dar! (?)

            Ich habe jetzt mal unter EDIT über Tastatur das »ö« eingegeben und über den Ziffernblock 246 (als »÷« dargestellt) und gespeichert. Ergebnis im Hex-Editor:
            »ö« -> 94
            »÷« -> F6

            Und Notepad stellt dies wie Du schon geschrieben hast als »”« und »ö« dar.
            freundliche Grüße
            Ingo

            1. n'Abend!

              Also steht dort »Kodierung:« oder »Zeichensatz:« oder ähnliches davor?
              Weder noch. Windows verwendet lieber "Codierung" ;-) also wie in Martins Screenshot.

              Yo. Und in der englischen Fassung steht "Encoding", wie ich an der heimischen Maschine gerade gesehen habe.

              Meine Tests mit Windows 98 bezogen sich auf die Darstellung im Fenster. Ob im Vollbildmodus oder nicht, die Bytes wurden gemäß Codepage 850 dargestellt.
              Ich kann es jetzt nicht mehr so leicht testen, aber im Vollbildmodus konnte AFAIK nur die im System eingestellte Codepage verwendet werden, während die grafische Fensterdarstellung zumindest etwas anderes ermöglichen könnte.

              In der DOS-Box von Win9x werden die Zeichen AFAIK _ausschließlich_ gemäß der Codepage angezeigt, die in der config.sys bzw. autoexec.bat voreingestellt ist. Und zwar unabhängig davon, ob im Fenster oder Vollbild.
              Bei der Standardinstallation wird allerdings auch die Codepage 850 für den DOS-Modul explizit eingerichtet. Das sind die Anweisungen wie "device=display.sys" und "mode con ...", die ich immer möglichst schnell wieder ersatzlos streiche. Denn wenn schon reiner Textmodus, dann will ich auch den Original IBM-ASCII-Zeichensatz mit all seinen grafischen Symbolen.
              Die Formulierung "... die grafische Fensterdarstellung zumindest etwas anderes ermöglichen könnte" ist natürlich technisch richtig - aber die Möglichkeit nutzt Win9x nicht. Hier wird nur versucht, die Darstellung vom reinen Textmodus möglichst exakt zu kopieren.

              Ich habe jetzt mal unter EDIT über Tastatur das »ö« eingegeben und über den Ziffernblock 246 (als »÷« dargestellt) und gespeichert. Ergebnis im Hex-Editor:
              »ö« -> 94
              »÷« -> F6

              So hätte ich das auch erwartet! Das andere Mysterium kann ich auch nicht so recht erklären.
              Viel Spaß noch bei der weiteren Diskussion,  :)

              Martin

      2. Hallo nochmal,

        Hm, wer redet denn von ISO-Zeichensätzen?

        Äh, vielleicht bringe ich hier was durcheinander, weil ich selbst nicht den klarsten Durchblick habe. Mir fliegen hier auch gerade zu viele Bezeichnungen um die Ohren. ANSI, Unicode, UTF-8, ISO-8859-1, Windows-1252... *schüttel*

        Also ist standardmäßig »Unicode« vorausgewählt?

        Ja, manchmal - aber komischerweise nicht immer. Ich habe noch nicht verstanden, wovon das abhängt (dafür benutze ich den Notepad auch zu selten).

        Kannst du eventuell ein Screenshot machen

        Sollte jeden Moment in deinem Postfach landen, wenn die Adresse gültig ist, die du hier im Forum verwendest. :)

        Das erscheint mir schlüssig. Ist diese Anpassung ein Novum in 2k/XP? 95/98/ME machen es wie gesagt nicht.

        Richtig und Falsch. Win95/98 machen es wohl, benutzen aber für die DOS-Box ohnehin die Einstellungen aus config.sys & autoexec.bat, so dass hier strenggenommen nicht Windows konvertiert, sondern die virtuelle DOS-Maschine. Wie das bei ME läuft, weiß ich nicht - aber vermutlich genauso.
        In den NT-basierten Systemen ist es schließlich Windows selbst. Aber frag mich jetzt bitte nicht, wo das eingestellt wird - mir war's bisher eigentlich recht egal. ;)

        Was meinst du mit »ISO-Codetabelle, die für DOS-Applikationen eingestellt ist«? Windows-1252?

        Die sogenannten Codepages aus den früheren DOS-Versionen waren IIRC auf irgendwelche ISO-Tabellen aufgebaut. Windows-1252 ist eine GANZ andere Geschichte.

        Umlaute als »ANSI« ...

        Windows/ANSI und die IBM/ASCII-Zeichencodierung aus der DOS-Box passen "ums Verrecken" nicht zusammen, wenn man mal vom reinen ASCII (bis 0x7F) absieht. Bei den Umlauten gibt's da IMMER Durcheinander.

        Ich frage mich jetzt, ob die besagte »Anpassung« in Windows 2000 und und XP bewirkt, dass edit.com ein Byte mit dem Wert 0xF6 tatsächlich als »ö« darstellt.

        Nein. Es geht hier nur um die korrekte Darstellung von Zeichen INNERHALB der DOS-Box. Sobald du diese Zeichen in einer Datei speicherst und unter "Native Windows" wieder anschaust, geht's in die Hose.

        That's life.   :~|

        Martin