Struppi: Mein lieber Valigator

Beitrag lesen

Also meiner Meinung nach, spielt die Kodierung beim erstellen einer Datei null eine Rolle. Ein Byte ist einfach eine Zahl von 0 bis 255.

Warum soll die Kodierung keine Rolle spielen? Irgendwo muss doch festgelegt sein, wie ein Zeichen in Bytes repräsentiert werden soll.

Genau, repräsentiert => dargestellt werden.

Ich kann doch nicht einfach irgendwelche beliebigen Bytes nehmen, wenn ich einen Text in Dateiform ablegen will. Wenn ich also ein € in die Datei schreiben will, muss ich das gemäß ISO-8859-15 als A4, gemäß Windows-1252 als 80 und gemäß UTF-8 als E2 82 AC tun. Wie bezeichntest du sonst den Vorgang, um von einem Text zu den ihn verkörpernden Bytes zu gelangen?

Konvertierung oder Dekodierung. Den Fehler den du machst, ist von einem Text auszugehen. Ein Text ist ja bereits eine kodierte Zeichenfolge, im einfachsten Fall ASCII. Ein Text ist aber nur ein Ausdruck für eine für Menschen lesbare Datei und die muss logischerweise kodiert bzw. dekodiert werden, da hast du Recht.

Aber, um dein Beispiel fortzuführen, wenn ich die obige Datei mit meinem Editor einlese kann er versuchen zu erkennen in welcher Kodierung diese vorliegt, das wird aber bei dem Zeichen 80 schwer fallen. Im DOS Fenster ist es ein Ç in einem utf-8 HTML Dokument ein Fragezeichen. Die Datei enthält im Prinzip keinerlei Informationen über die Kodierung. Die ergibt sich erst aus dem Kontext, wie du es in deinem Artikel auch schriebst.

Man dekodiert/interpretiert einen Dateiinhalt gemäß einer Kodiervorschrift. ("Kodiervorschrift" steht hier für eine Vorschrift die den Prozess in beide Richtungen beschreibt).
Also für mich sind Dateien Folgen von Bytes mit keinerlei Kodierung. Diese kommt erst bei der Darstellung zum tragen.

Diese Folge von Bytes ist doch aber nicht willkürlich. Die Bytes repäsentieren Text, sie sind kodierter Text. Wenn ich sie sinnerhaltend weiterverarbeiten will - vielleicht zum späteren Ausgeben - muss ich die Kodierung (in umgekehrter Richtung) berücksichtigen, so dass wieder das Zeichen daraus wird, was beabsichtigt war.

genau: Die Darstellung, du  sprichst ja nur von Texten, es gibt aber auch z.b. Bilder, auch diese Dateien kannst du mit deinem Editor öffnen und bekommst je nach dem was der Editor macht eine laut piepsende Ausgabe. Es ist aber nicht erkennbar, dass es ein Bild ist.

Willst du etwa den Sinn und die Bytefolge voneinander trennen?

Natürlich, es spielt ja auch keine Rolle, du kanst auch jedes Textdokument in irgendeiner Kodierung darstellen lassen, siehst halt andere Zeichen. Obn es richtig ist, erkennt erst der Mensch der sie lesen muss.

Eine Bytefolge steht für kein Zeichen, d.h. Zeichen wird es erst nach der Kodierung und Darstellung.

Warum nicht? Was soll denn der Wert der Bytes sonst repräsentieren?

Eine Zahl zwischen 0 und 255.

Nach dem Satz glaube ich wir meinen doch das gleiche, drücken es nur anders aus. Das Programm, dass eine Bytefolge darstellen muss braucht eine Dekodierungsvorschrift.

Eben. Die Umkehrfunktion zur verwendeten Kodierung.

Die aber nicht notwendigerweise in der Datei ersichtlich ist.

Wenn ich in meinem Editor eine Datei öffne gibt es erstmal keine Kodierung, sie spielt also beim lesen keine Rolle. Sie spielt erst eine Rolle, wenn die Zeichen interpretiert werden sollen und das ist für mich darstellen.

An dieser Stelle trennst du Dinge unnötig auf, scheint mir. Die allgemeine Betriebssystemfunktion zum Lesen aus Dateien liest natürlich Bytes ohne deren Sinn zu "hinterfragen". Das passiert aber einer Ebene, die unterhalb der betrachteten liegt. Der Editor, der den Bytestrom entgegennimmt, muss selbstverständlich die Datei dekodieren um sie in eine Form zu bringen, mit der er intern arbeiten kann. Er kann sie auch noch dreimal uninterpretiert im Speicher umlagern, aber das bringt uns als außenstehender Betrachter nicht weiter. Er muss jedenfalls schon für die interne Verarbeitung den Sinn der Zeichen kennen, und nicht erst dann, wenn er sie an die (Bildschirm-)Ausgaberoutine weitergibt. Wie soll er sonst Wortgrenzen oder Zeilen oder sowas erkennen?

Das tut er, weil entweder er weiß, das z.b. eine .txt Datei in diesem windows-1252 Kodierung vorliegt oder du musst es dem Editor explizit sagen.

Schreib mal einen Text mit Umlauten in einem DOS Editor und schon merkst du, dass es dem Bytestrom an sich egal ist, du musst dem Editor sagen wie er zu dekodieren hat, damit die Darstellung dem entspricht was du erwartest.

Struppi.

0 69

Mein lieber Valigator

hotti
  • html
  1. 0
    MudGuard
    1. 0
      hotti
      1. 0
        Gunnar Bittersmann
        1. 0
          hotti
          1. 0
            Gunnar Bittersmann
            1. 0
              hotti
              1. 0
                Gunnar Bittersmann
                1. 0
                  hotti
                  1. 0
                    Gunnar Bittersmann
                    1. 0
                      hotti
                      1. 0
                        Gunnar Bittersmann
                        1. 0
                          hotti
                          1. 0
                            Gunnar Bittersmann
                            1. 0
                              hotti
                              1. 0
                                Gunnar Bittersmann
                                1. 0
                                  hotti
                                  1. 0
                                    Gunnar Bittersmann
          2. 0
            MudGuard
            1. 0
              hotti
      2. 0
        MudGuard
        1. 0
          hotti
          1. 0
            Gunnar Bittersmann
            1. 0
              hotti
              1. 0
                Der Martin
                1. 0
                  hotti
                  1. 0
                    Der Martin
                    1. 0
                      hotti
                      1. 1
                        Der Martin
                        1. 0
                          hotti
                          1. 0
                            Gunnar Bittersmann
                      2. 0
                        dedlfix
                        1. 0
                          hotti
                          1. 0
                            Der Martin
                            1. 0
                              Længlich
                              1. 0
                                Der Martin
                      3. 0
                        Gunnar Bittersmann
                        1. 0
                          hotti
                          1. 0
                            Gunnar Bittersmann
                            1. 0
                              hotti
                              1. 0
                                Gunnar Bittersmann
                          2. 0
                            dedlfix
                            1. 0
                              JürgenB
                          3. 0
                            Struppi
                            1. 0
                              hotti
                              1. 0
                                Struppi
                                1. 0
                                  hotti
                                  1. 0
                                    Struppi
                                    1. 0
                                      hotti
                                      1. 0
                                        Struppi
                                    2. 0
                                      dedlfix
                                      1. 0
                                        Struppi
                                        1. 0
                                          Beat
                                          1. 0
                                            Struppi
                                            1. 0
                                              Beat
                                              1. 0
                                                dedlfix
                                                1. 0
                                                  Beat
                                                  1. 0
                                                    dedlfix
                                        2. 0
                                          dedlfix
                                          1. 0
                                            hotti
                                            1. 0
                                              Struppi
                                          2. 0
                                            Struppi
                                            1. 0
                                              dedlfix
                                  2. 0
                                    Gunnar Bittersmann
                                    1. 0
                                      hotti
                                      1. 0
                                        Gunnar Bittersmann
                                        1. 0
                                          hotti
                                          1. 0
                                            Gunnar Bittersmann
              2. 0
                Gunnar Bittersmann