Karl Heinz: einige Fragen zur Zeichenkodierung

Hallo,

ich habe einige Fragen zur Zeichenkodierung.

Mit Hilfe eines Editors habe ich eine *.txt Datei geöffnet.

Manche Zeichen in der *.txt Datei werden nicht korrekt dargestellt.

  1. Wenn ich das richtig verstanden habe, dann sind zum einen die Zeichen in der *.txt Datei mit einem bestimmten Zeichensatz kodiert, zum anderen kann im Editor ein Zeichensatz eingestellt werden, mit welchem die Zeichen in der *.txt interpretiert werden. Ist das so korrekt erklärt?

  2. Demnach werden die Zeichen im Editor falsch dargestellt, wenn der im Editor gewählte Zeichensatz nicht zu dem Zeichensatz passt, mit welchem die Zeichen in der *.txt Datei kodiert wurden. Ist das so korrekt erklärt?

  3. Wie kann ich eigentlich den Zeichensatz einer *.txt Datei herausfinden? Irgendwo muss ja in den Metadaten der Datei festgelegt werden mit welchem Zeichensatz die Zeichen in der Datei kodiert wurden. Könnt ihr mir sagen wo bzw. wie ich den in der Datei verwendeten Zeichensatz herausfinden kann? Wenn ich diesen Zeichensatz im Vorfeld ermittlen könnte hätte ich auch die Möglichkeit den Zeichensatz im Editor richtig zu setzen, damit die Zeichen korrekt dargestellt werden.

  4. Warum erkennt der Editor den in der Datei verwendeten Zeichensatz eigentlich nicht automatisch?

akzeptierte Antworten

  1. Tach!

    1. Wenn ich das richtig verstanden habe, dann sind zum einen die Zeichen in der *.txt Datei mit einem bestimmten Zeichensatz kodiert, zum anderen kann im Editor ein Zeichensatz eingestellt werden mit welchem die Zeichen in der *.txt interpretiert werden. Ist das so korrekt erklärt?

    Ja. Das ist immer so. Texte sind immer auf irgendeine Art und Weise kodiert, weil ja immer nur Zahlenwerte gespeichert werden und eine Zuordung zwischen Buchstabe/Zeichen zu einer bestimmten Zahl getroffen werden muss. Historisch bedingt gibt es aber leider eine Vielzahl solcher Zuordnungsvorschriften.

    1. Demnach werden die Zeichen im Editor falsch dargestellt, wenn der im Editor gewählte Zeichensatz nicht zu dem Zeichensatz passt, mit welchem die Zeichen in der *.txt Datei kodiert wurden. Ist das so korrekt erklärt?

    Wenn er halt einem bestimmten Zahlenwert ein anderes Zeichen zuordnet, dann wird das eben das andere angezeigt.

    1. Wie kann ich eigentlich den Zeichensatz einer *.txt Datei herausfinden?

    Da gibt es wie bei Verschlüsslung kein Patentrezept. Wenn der Schlüssel nicht bekannt ist, muss man probieren oder raten.

    Irgendwo muss ja in den Metadaten der Datei festgelegt werden mit welchem Zeichensatz die Zeichen in der Datei kodiert wurden.

    Schön wärs. Man hat versäumt, ein solches System zu implementieren und es gibt bis heute kein derartiges (mir bekanntes).

    Zumindest im HTTP gibt es die Möglichkeit, eine Kodierungsangabe in den Headern mitzusenden. Aber wo der Server die Kodierungsinformation hernimmt, ist sein Problem. Meist ist das fest eingestellt, weil derjenige, der die Dateien da hinkopiert hat, die verwendete Zeichenkodierung kannte und den Webserver entsprechend konfigurierte.

    Könnt ihr mir sagen wo bzw. wie ich den in der Datei verwendeten Zeichensatz herausfinden kann?

    Versuche sie nach bestimmten Kodiervorschriften zu lesen. Wenn das Resultat lesbar ist, dann wird es wohl diese Kodierung sein. Das kann man aber erst sagen, wenn man alle vorkommenden Zeichen überprüft hat.

    Wenn ich diesesn Zeichensatz im Vorfeld ermittlen könnte hätte ich auch die Möglichkeit den Zeichensatz im Editor richtig zu setzen, damit die Zeichen korrekt dargestellt werden.

    Ja, ist aber nicht.

    1. Warum erkennt der Editor den in der Datei verwendeten Zeichensatz eigentlich nicht automatisch?

    Geht prinzipbedingt nicht. Man kann lediglich bei Mehrbyte-Kodierungen feststellen, ob eine bestimme Bytefolge eine gültige Sequenz ergibt. Das kann aber auch nur Zufall sein.

    Ein-Byte-Kodierungen kann man nur anhand des Ergebnisses beurteilen. Schau dir mal die Tabelle der ISO-8859-Kodierungen an. Welches Zeichen zum Beispiel das Byte A1 repräsentiert, kann man nicht von sich heraus sagen. Das braucht eine Plausibilitätskontrolle.

    Man kann sich mit Ausschlusskriterien das Leben einfacher machen, wenn nur ISO-8859-1 und UTF-8 infrage kommen. Dann kann man testen, ob es gültiges UTF-8 ist oder wenn nicht, ist es eben die andere. Aber wenn die Möglichkeit besteht, dass es eine andere Ein-Byte-Kodierung sein könnte, hat man Pech.

    Glossar: Ein-Byte-Kodierung: Jedes Zeichen entspricht einem Byte, jedes Byte einem Zeichen. Insgesamt lassen sich damit nur 256 Zeichen repräsentieren.

    Mehr-Byte-Kodierung: Ein Zeichen kann mit mehreren Bytes (festgelegten Sequenzen) kodiert werden. Damit sind mehr als 256 Zeichen repräsentierbar. Nur die korrekte Sequenz ergibt wieder ein Zeichen.

    dedlfix.

    1. Hallo dedlfix,

      vielen Dank für die tolle Antwort, besser kann man das wirklich nicht erklären.

      Habe noch eine Rückfrage, vielleicht weißt du auch hier Rat?

      Die genannte *.txt Datei habe ich mit einer Software eingelesen. In der Software habe ich bei Codierung "automatische Erkennung" eingestellt.

      Wie soll die Software die Zeichencodierung automatisch erkennen, wenn die Codierung garnicht in den Metadaten festgehalten wird?

      Des weiteren zeigt mir die Software folgende Fehlermeldung:

      Codierungsproblem (doppelte UTF8-Codierung) in Attribut: description.

      Hast du eine Ahnung was konkret mit "doppelte UTF8-Codierung" gemeint sein könnte?

      1. Hallo Karl Heinz,

        Wie soll die Software die Zeichencodierung automatisch erkennen, wenn die Codierung garnicht in den Metadaten festgehalten wird?

        Sie kann auch nur raten.

        Codierungsproblem (doppelte UTF8-Codierung) in Attribut: description.

        Hast du eine Ahnung was konkret mit "doppelte UTF8-Codierung" gemeint sein könnte?

        Die Funktion utf8_encode etwa wandelt einen Text, der in der Kodierung ISO-8859-1 vorliegt, nach UTF-8 um.

        Wenn du einen Text, der nicht in dieser Kodierung vorliegt, durch diese Funktion bearbeiten lässt, wird das Ergebnis nicht korrekt sein.

        Bis demnächst
        Matthias

        --
        Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
      2. Tach!

        Wie soll die Software die Zeichencodierung automatisch erkennen, wenn die Codierung garnicht in den Metadaten festgehalten wurde?

        Sie rät. Vermutlich so: Ist es gültiges UTF-8? Gibts eine UTF-BOM? Wenn nein, wird es wohl die im Windows eingestellte Kodierung sein.

        Codierungsproblem (doppelte UTF8-Codierung) in Attribut: description.

        Hast du eine Ahnung was konkret mit "doppelte UTF8-Codierung" gemeint sein könnte?

        Ja, da hat jemand einen UTF-8-kodierten Text als (vermutlich) ISO-8859-1 gelesen und nochmal nach UTF-8 konvertiert.

        ISO-8859-1 ist eine Ein-Byte-Kodierung, jedes Byte = ein Zeichen, UTF-8-Sequenzen haben zwei oder mehr Byte bei bestimmten Zeichen, die Bytes wurden einzeln als Zeichen interpretiert und gemäß UTF-8 mit Bytesequenzen geschrieben.

        Man kann sowas zu erkennen versuchen, indem man einmal auf gültiges UTF-8 testet, den Text dann nach ISO-8859-1 kodiert und nochmal testet, ob es immer noch gültiges UTF-8 ist.

        Es ist recht unwahrscheinlich (aber nicht komplett auszuschließen), dass UTF-8-Byte-Sequenzen von Nicht-ASCII-Zeichen sinnvolle ISO-8859-1-Zeichenfolgen ergeben. Deshalb nimmt man an, dass wenn der einmal dekodierte Text immer noch gültige UTF-8-Sequenzen enthält, doppelt kodiert wurde.

        Lösung des Problems: Lesen als UTF-8, Umkodieren oder Speichern als ISO-8859-1. Jetzt hat man ein nur einmal kodiertes UTF-8-Dokument.

        dedlfix.

        1. Codierungsproblem (doppelte UTF8-Codierung) in Attribut: description.

          Hast du eine Ahnung was konkret mit "doppelte UTF8-Codierung" gemeint sein könnte?

          Ja, da hat jemand einen UTF-8-kodierten Text als (vermutlich) ISO-8859-1 gelesen und nochmal nach UTF-8 konvertiert.

          Ich bin mir hier nicht ganz sicher ob ich Dich richtig verstehe. Ist das so gemeint:

          • *.txt liegt in UTF8 Codierung vor
          • *.txt wird mit Editor geöffnet
          • im Editor ist die Codierung ISO-8859-1 eingestellt
          • Einstellung im Editor wird von ISO-8859-1 auf UTF8 geändert
          • Datei wird mit der UTF8 Codierung gespeichert

          Irgendwie passt das nicht. Dann würde doch keine doppelte Codierung vorliegen.

          Ich habe hier leider noch nicht verstanden was du meinst. Verstehe leider noch nichtd was was mit doppelte Codierung gemeint ist. Es ist doch garnicht möglich, dass eine Datei gleichzeitig zwei Codierungen verwendet?

          Könntest du das etwas detailliert erklären? Das wäre super freundlich.

          1. Hallo

            Ich bin mir hier nicht ganz sicher ob ich Dich richtig verstehe. Ist das so gemeint:

            • *.txt liegt in UTF8 Codierung vor
            • *.txt wird mit Editor geöffnet
            • im Editor ist die Codierung ISO-8859-1 eingestellt
            • Einstellung im Editor wird von ISO-8859-1 auf UTF8 geändert
            • Datei wird mit der UTF8 Codierung gespeichert

            Irgendwie passt das nicht. Dann würde doch keine doppelte Codierung vorliegen.

            Die doppelte Kodierung liegt dann vor, wenn ein Text, der UTF-8-kodiert ist ein weiteres mal mit UTF-8 (um)kodiert wird. Was du beschrieben hast, ist die Korrektur einer Fehlinterpretation des Editors, ohne dabei den Inhalt der Datei zu ändern.

            Das von dir beschriebene Szenario lässt sich mMn sehr schön im Notepad++ nachvollziehen, indem man ihm eine Textdatei z.B. mit Umlauten im Inhalt vorwirft und dann über den Menüpunkt "Kodierung" selbige zwischen den Werten hin und her schaltet. Der Editor fordert nach einer Änderung auch zum speichern der Datei auf, im Endeffekt ändert er aber nur seine Interpretation des Inhalts in der Ansicht.

            Und auch wenn das Gunnar hier im Thread schon gesagt hat, sei noch einmal darauf hingewiesen, dass Textdateien keine Metadaten besitzen, die interpretiert oder fehlinterpretiert werden können. Die Editoren sind zur Ermittlung der Kodierung auf die Interpretation des Inhalts oder eigene Mechanismen der Speicherung von Metadaten ihnen bekannter Dateien, z.B. in Projektdateien angewiesen. Den ersten Mechanismus muss, den zweiten kann es geben.

            Verstehe leider noch nichtd was was mit doppelte Codierung gemeint ist. Es ist doch garnicht möglich, dass eine Datei gleichzeitig zwei Codierungen verwendet?

            Nein, das kann sie nicht. Eine Kodierung kann aber fälschlicherweise mehrfach vorgenommen werden.

            Tschö, Auge

            --
            Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.
            Toller Dampf voraus von Terry Pratchett
            1. Die doppelte Kodierung liegt dann vor, wenn ein Text, der UTF-8-kodiert ist ein weiteres mal mit UTF-8 (um)kodiert wird.

              Leider ist der Groschen noch immer nicht gefallen :-(

              Bei der UTF-8 Codierung werden Zeichen aus dem ASCII Zeichensatz ja mir nur einem Byte codiert.

              Nehmen wir an auf der Festplatte ist für ein bestimmtes ASCII-Zeichen folgender Wert gespeichert:

              01010001 (Zeichen auf dem ASCII Zeichensatz mit UTF8 in die Bitfolge codiert)

              Soll das mit UTF8 gespeicherte Zeichen in einem Editor dargestellt werden, so wendet der Editor einfach die UTF8-Codierung an, dadurch wird aus der Bitfolge das gespeicherte Zeichen rekonstruiert.

              UTF8 wird doch immer die gleiche Codierung verwenden, sprich der Buchstabe wird immer die gleiche Zahlenkombination haben.

              Demnach verstehe ich nicht wie die von die genannte Umkodierung von statten gehen soll.

              Kannst du ein konkretes Beispiel nennen?

              1. Hallo Karl Heinz,

                Kannst du ein konkretes Beispiel nennen?

                Stell dir vor, du hast eine Funktion, die von Deutsch nach Englisch übersetzt, ohne auf die Groß-und Kleinschreibung zu achten.

                to_eng('kurz') ergibt 'brief'.
                to_eng(to_eng('kurz')) ergibt 'letter'

                Letzteres wäre die mehrfache Kodierung. Weil du versuchst, ein Wort, das schon englisch ist, noch mal ins Englische zu übersetzen. Das Beispiel selbst ist vielleicht nicht so der Brüller, aber ich denke, das Prinzip sollte rübergekommen sein.

                to_eng('geschenk') ergibt 'gift'.
                to_eng(to_eng('geschenk')) ergibt 'poison'

                Bis demnächst
                Matthias

                --
                Dieses Forum nutzt Markdown. Im Wiki erhalten Sie Hilfe bei der Formatierung Ihrer Beiträge.
              2. Tach!

                Bei der UTF-8 Codierung werden Zeichen aus dem ASCII Zeichensatz ja mir nur einem Byte codiert.

                Ja, die sind durch nichts zu unterscheiden von ASCII oder von der unteren Hälfte von ISO-8859-x, was ja auch ASCII ist.

                UTF8 wird doch immer die gleiche Codierung verwenden, sprich der Buchstabe wird immer die gleiche Zahlenkombination haben.

                Demnach verstehe ich nicht wie die von die genannte Umkodierung von statten gehen soll.

                Der Unterschied liegt im Rest der Zeichen. Alles was mit mehr als einem Byte kodiert wird, und damit unterschiedlich zu ISO-8859-x ist. Also alles was nicht ASCII ist. Darunter fallen zum Beispiel die Umlaute. Nur an diesen Zeichen kann man doppelte Kodierung, aber auch falsche Kodierung erkennen.

                dedlfix.

                1. Hallo und guten Morgen,

                  Bei der UTF-8 Codierung werden Zeichen aus dem ASCII Zeichensatz ja mir nur einem Byte codiert.

                  Ja, die sind durch nichts zu unterscheiden von ASCII oder von der unteren Hälfte von ISO-8859-x, was ja auch ASCII ist.

                  UTF8 wird doch immer die gleiche Codierung verwenden, sprich der Buchstabe wird immer die gleiche Zahlenkombination haben.

                  Demnach verstehe ich nicht wie die von die genannte Umkodierung von statten gehen soll.

                  Der Unterschied liegt im Rest der Zeichen. Alles was mit mehr als einem Byte kodiert wird,

                  zur Verdeutlichung: das passiert dann bei allen Codes, die breiter als 7 Bit sind. Die bekommen (mindestens) das zweite Byte dazu.

                  und damit unterschiedlich zu ISO-8859-x ist. Also alles was nicht ASCII ist. Darunter fallen zum Beispiel die Umlaute. Nur an diesen Zeichen kann man doppelte Kodierung, aber auch falsche Kodierung erkennen.

                  Grüße
                  TS

                  --
                  es wachse der Freifunk
                  http://freifunk-oberharz.de
        2. Codierungsproblem (doppelte UTF8-Codierung) in Attribut: description.

          Hast du eine Ahnung was konkret mit "doppelte UTF8-Codierung" gemeint sein könnte?

          Ja, da hat jemand einen UTF-8-kodierten Text als (vermutlich) ISO-8859-1 gelesen und nochmal nach UTF-8 konvertiert.

          Lösung des Problems: Lesen als UTF-8, Umkodieren oder Speichern als ISO-8859-1. Jetzt hat man ein nur einmal kodiertes UTF-8-Dokument.

          Ich habe folgendes gemacht:

          • Zunächst die Datei mit dem Editor geöffnet (eingestellte Zeichenkodierung = UTF8).
          • ä, ü, ß usw. werden nich korrekt dargestellt.
          • Die Datei habe ich erneut unter der Zeichenkodierung ISO-8859-1 gespeichert.
          • Anschließend habe ich die Datei erneut mit UTL8 geöffnet.
          • Jetzt werden ä, ü, ß usw. korrekt dargestellt.

          Demnach hast du mit Deiner Vermutung richtig gelegen. Dafür schon einmal vielen Dank.

          Nun ist es so, das die *.txt Datei (mit der doppelten Kodierung) automatisch von einem Modul eines Oxid Online-Shops generiert wird.

          In den Moduleinstellungen habe ich nirgends etwas zu den Zeichenkodierungen finden können.

          Ich frage mich gerade wo genau es zu der doppelten Kodierung kommt. Könnt Ihr mir bei der Eingrenzung der Ursache behilflich sein? Irgendwo muss ja etwas umgestellt werden, damit es zu keiner doppelten Kodierung mehr kommt. Ich weiß halt nur nicht wo etwas umgestellt werden muss. Wisst Ihr hier Rat?

          1. Tach!

            Nun ist es so, das die *.txt Datei (mit der doppelten Kodierung) automatisch von einem Modul eines Oxid Online-Shops generiert wird. Könnt Ihr mir bei der Eingrenzung der Ursache behilflich sein?

            Das ist aufwendig. Um da nach der Ursache zu forschen, müsste man sich das installieren, das Problem nachstellen und dann suchen gehen. Ich bitte dich, das mit dem Hersteller der Software zu klären.

            dedlfix.

            1. Tach!

              Nun ist es so, das die *.txt Datei (mit der doppelten Kodierung) automatisch von einem Modul eines Oxid Online-Shops generiert wird. Könnt Ihr mir bei der Eingrenzung der Ursache behilflich sein?

              Das ist aufwendig. Um da nach der Ursache zu forschen, müsste man sich das installieren, das Problem nachstellen und dann suchen gehen. Ich bitte dich, das mit dem Hersteller der Software zu klären.

              dedlfix.

              OK, danke, dann ruf ich den mal an :-).

            2. Das ist aufwendig. Um da nach der Ursache zu forschen, müsste man sich das installieren, das Problem nachstellen und dann suchen gehen. Ich bitte dich, das mit dem Hersteller der Software zu klären.

              Ich habe beim Hersteller nachgefragt und folgende Antwort per Mail erhalten:

              Unser Modul ließt die Daten anhand der OXID eigenen Objektfunktionalität aus dem System und der Systemdatenbank aus, genau wie der Shop es sonst auch macht.

              Diese Daten schreiben wir ohne Modifikation der Zeichensatz-Kodierung (weder decode noch encode) in die *.txt-Datei.

              Ihre Problematik besteht wohl schon in den Artikel-Daten der Shop Datenbank und auch dort ist der Fehler für Sie vorrangig zu suchen.

              Eventuell modifizieren noch andere Module den Datensatz Ladevorgang auf dem Weg zum geladenen Artikel PHP Objekt, jedoch nimmt unser Modul keinerlei Änderungen wie Charset Wandlungen vor.

              Nun bin ich kein Oxid Experte würde den Fehler aber trotzdem gerne finden.

              Hilft die Antwort oben weiter damit du mit weitere Tipps geben kannst?

              So wie ich das verstehe liegen die Daten bereits in der Datenbank doppelt kodiert vor. Ist das so korrekt?

              Wenn ja, dann würde das bedeuten, dass auch beim Betrachten des Shops im Browser bestimmte Zeichen aufgrund der doppelten Kodierung falsch dargestellt werden müssten. Ist das so korrekt?

              1. Tach!

                So wie ich das verstehe liegen die Daten bereits in der Datenbank doppelt kodiert vor. Ist das so korrekt?

                Das ist deren Vermutung.

                Wenn ja, dann würde das bedeuten, dass auch beim Betrachten des Shops im Browser bestimmte Zeichen aufgrund der doppelten Kodierung falsch dargestellt werden müssten. Ist das so korrekt?

                Theoretisch ja. Es sei denn, man macht rückwärts denselben Fehler wie vorwärts (nur mit umgekehrtem Vorzeichen) und die Wirkungen heben sich dabei auf.

                Man selbst kann nicht direkt in die Datenbank schauen. Die ist wie eine Art Black Box. Also theoretisch kann man sich schon durch die Binärsuppe wühlen, dazu müsste man aber das Speicherformat kennen. Ein einfacher Weg hingegen ist, sich ein Tool zu schnappen, das diesbezüglich alles richtig macht, und das muss dann fehlerhafte Daten ausgeben, wenn sie nicht bestimmungsgemäß abgelegt sind, oder alles richtig anzeigen, wenn alles ok ist. Ich vertraue dazu dem phpMyAdmin.

                dedlfix.

    2. @@dedlfix

      Ja. Das ist immer so.

      Nein. Das ist nie so.

      Auf den falsch verwendeten Begriff „Zeichensatz“ hättest du hinweisen sollen.

      LLAP 🖖

      --
      “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
      1. Tach!

        Ja. Das ist immer so.

        Nein. Das ist nie so.

        Gut, dann anders formuliert: Ja, das ist immer so, wenn man statt Zeichensatz von Zeichenkodierung ausgeht.

        Auf den falsch verwendeten Begriff „Zeichensatz“ hättest du hinweisen sollen.

        Hab da nicht genau aufgepasst und es so interpretiert, wie es gemeint war.

        dedlfix.

  2. @@Karl Heinz

    1. Wenn ich das richtig verstanden habe, dann sind zum einen die Zeichen in der *.txt Datei mit einem bestimmten Zeichensatz kodiert, zum anderen kann im Editor ein Zeichensatz eingestellt werden, mit welchem die Zeichen in der *.txt interpretiert werden. Ist das so korrekt erklärt?

    Nein. Ein Zeichensatz bestimmt, welche Zeichen vorkommen können. Wie anno dazumals beim Lettersatz: Es kann nur das zu Papier gebracht werden, wozu es eine Bleitetter im Zeichensatz (wörtlich: ein Satz von Zeichen) gibt. Im Digitalen wird heute Unicode als Zeichensatz verwendet – darin sind alle Zeichen enthalten. Und Unicode wird ständig erweitert: es kommen Emojis hinzu oder für besondere Sprachen verwendete oder historische Schriften.

    Wie die Zeichen im Coputer auf Bytes (Bytesequenzen) abgebildet werden, ist Sache der Zeichencodierung.

    Im Zeitalter von 8-Bit-Codierungen (ISO 8859) konnte man die Begriffe noch vermengen; heute gilt es, sie sorgfältig auseinanderzuhalten. Siehe Zeichencodierung für Anfänger und Zeichencodierungen: grundlegende Konzepte, besonders Abschnitt Zeichensätze, codierte Zeichensätze und Zeichencodierungen.

    2. Demnach werden die Zeichen im Editor falsch dargestellt, wenn der im Editor gewählte Zeichensatz nicht zu dem Zeichensatz passt, mit welchem die Zeichen in der *.txt Datei kodiert wurden. Ist das so korrekt erklärt?

    Wenn man „Zeichensatz“ durch „Zeichencodierung“ ersetzt, ja. Wenn eine Bytesequenz mit einer anderen Zeichencodierung decodiert wird als sie codiert wurde, dann kann da Murks rauskommen.

    3. Wie kann ich eigentlich den Zeichensatz einer *.txt Datei herausfinden? Irgendwo muss ja in den Metadaten der Datei festgelegt werden mit welchem Zeichensatz die Zeichen in der Datei kodiert wurden.

    Textdateien haben keine Metadaten (in sich). Wenn die aber als Ressourcen auf die Reise gehen, können von außen Metadaten darüber gemacht werden; bei Übertragung mittels HTTP im Header: bspw. Content-Type: text/plain; charset=UTF-8.

    In einer Unicode-Codierung (UTF-8, UTF-16 u.a.) codierte Dateien können aber ein byte order mark (BOM) am Anfang haben, das (so nebenbei auch) die Zeichencodierung angibt.

    Könnt ihr mir sagen wo bzw. wie ich den in der Datei verwendeten Zeichensatz herausfinden kann? Wenn ich diesen Zeichensatz im Vorfeld ermittlen könnte hätte ich auch die Möglichkeit den Zeichensatz im Editor richtig zu setzen, damit die Zeichen korrekt dargestellt werden.

    „Zeichensatz“ → „Zeichencodierung“. Du kannst nur raten. Bei der Bytesequenz C3 A4 kannst du raten, dass nicht ISO 8859-1 vorliegt und das für die Zeichenfolge 'ä' stehen soll, sondern dass das UTF-8 ist und für 'ä' steht.

    4. Warum erkennt der Editor den in der Datei verwendeten Zeichensatz eigentlich nicht automatisch?

    Weil es nicht seine Aufgabe ist, zu raten. Es könnte ja tatsächlich 'ä' gemeint sein.

    LLAP 🖖

    --
    “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
    1. Wie kann ich eigentlich den Zeichensatz einer *.txt Datei herausfinden? Irgendwo muss ja in den Metadaten der Datei festgelegt werden mit welchem Zeichensatz die Zeichen in der Datei kodiert wurden.

    Die Zeichenkodierung ist eine Festlegung die über den Dateibegriff hinausgeht. D.h., sie wird nicht in der Datei selbst verwaltet. Beim Transport einer Datei über unterschiedliche Plattformen muss daher die Kodierungsangabe zusätzlich übermittelt werden.

    .

    1. @@pl

      Die Zeichenkodierung ist eine Festlegung die über den Dateibegriff hinausgeht. D.h., sie wird nicht in der Datei selbst verwaltet.

      Ja.

      Beim Transport einer Datei über unterschiedliche Plattformen muss daher die Kodierungsangabe zusätzlich übermittelt werden.

      Es sei denn, es ist ein BOM in der Datei, was die Zeichencodierung zweifelsfrei erkennen lässt.

      Aber irgendwie sagte ich das alles schon.

      LLAP 🖖

      --
      “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
      1. Es sei denn, es ist ein BOM in der Datei, was die Zeichencodierung zweifelsfrei erkennen lässt.

        Bei Dateien die per Mail verschickt werden reicht schon ein flüchtiger Blick auf den Namen des Absenders ;)

        PS: Ein BOM kann in beliebigen Dateien vorkommen und ja, auch ganz vornedran.

        1. @@pl

          PS: Ein BOM kann in beliebigen Dateien vorkommen und ja, auch ganz vornedran.

          Ein BOM kann ausschließlich ganz vornedran vorkommen.

          Ein U+FEFF mittendrin wäre kein BOM, sondern ein missbilligtes ZWNBSP.

          LLAP 🖖

          --
          “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
          1. @@@

            PS: Ein BOM kann in beliebigen Dateien vorkommen und ja, auch ganz vornedran.

            Ein BOM kann ausschließlich ganz vornedran vorkommen.

            Ein U+FEFF mittendrin wäre kein BOM, sondern ein missbilligtes ZWNBSP.

            Und eine Bytesequenz FEFF ganz vorne dran heißt noch lange nicht dass es ein BOM sein muss.

            Bäh ;)

            1. @@pl

              Und eine Bytesequenz FEFF ganz vorne dran heißt noch lange nicht dass es ein BOM sein muss.

              Bäh ;)

              Und ein BOM ganz vorne dran heißt noch lange nicht, dass es eine Bytesequenz FE FF sein muss. Ist es auch nur bei UTF-16 big endian.

              Selber bäh ;)

              LLAP 🖖

              --
              “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
              1. Tja,

                Selber bäh ;)

                Das Wichtigste im Leben ist eben nicht das Loslassen sondern das Festhalten.

                ;)

                PS: Und lass den Tom in Ruhe, das isn Freund von mir.

                1. @@pl

                  PS: Und lass den Tom in Ruhe, das isn Freund von mir.

                  Sieht man an der Verteilung der Bewertungen hier im Thread.

                  LLAP 🖖

                  --
                  “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
      2. Hallo und guten Tag,

        Die Zeichenkodierung ist eine Festlegung die über den Dateibegriff hinausgeht. D.h., sie wird nicht in der Datei selbst verwaltet.

        Ja.

        Beim Transport einer Datei über unterschiedliche Plattformen muss daher die Kodierungsangabe zusätzlich übermittelt werden.

        Es sei denn, es ist ein BOM in der Datei, was die Zeichencodierung zweifelsfrei erkennen lässt.

        Nein, das ist eindeutig falsch!

        Da gehst Du davon aus, dass es sich um eine "Textdatei" handelt. Es könnte aber jede geartete Datendatei sein, die zufällig auch als lesbare Texte interpretierbare Bytesequenzen enthält und vorne anstehend eine Sequenz hat, die zufällig wie eine BOM aussieht.

        Grüße
        TS

        --
        es wachse der Freifunk
        http://freifunk-oberharz.de
        1. @@TS

          Beim Transport einer Datei über unterschiedliche Plattformen muss daher die Kodierungsangabe zusätzlich übermittelt werden.

          Es sei denn, es ist ein BOM in der Datei, was die Zeichencodierung zweifelsfrei erkennen lässt.

          Nein, das ist eindeutig falsch!

          Da gehst Du davon aus, dass es sich um eine "Textdatei" handelt. Es könnte aber jede geartete Datendatei sein

          Und „Zeichencodierung“ hätte bei Nicht-Text-Dateien welche Relevanz?

          LLAP 🖖

          --
          “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
          1. Hallo und guten Tag,

            Beim Transport einer Datei über unterschiedliche Plattformen muss daher die Kodierungsangabe zusätzlich übermittelt werden.

            Es sei denn, es ist ein BOM in der Datei, was die Zeichencodierung zweifelsfrei erkennen lässt.

            Nein, das ist eindeutig falsch!

            Da gehst Du davon aus, dass es sich um eine "Textdatei" handelt. Es könnte aber jede geartete Datendatei sein

            Und „Zeichencodierung“ hätte bei Nicht-Text-Dateien welche Relevanz?

            Die betroffene Datei kann doch Texte enthalten. Die unterliegen dann auch einer Kodierungsvorschrift. Aber die Datei kann auch binäre Werte enthalten. Zu Zeiten, als man noch mit (varianten) Records oder Structs gearbeitet hat, war das noch jedem Programmierer geläufig.

            Grüße
            TS

            --
            es wachse der Freifunk
            http://freifunk-oberharz.de
        2. @@TS

          Beim Transport einer Datei über unterschiedliche Plattformen muss daher die Kodierungsangabe zusätzlich übermittelt werden.

          Es sei denn, es ist ein BOM in der Datei, was die Zeichencodierung zweifelsfrei erkennen lässt.

          Nein, das ist eindeutig falsch!

          Was genau wäre denn an der Aussage falsch, dass, wenn ein BOM die Zeichencodierung schon zweifelsfrei erkennen lässt, keine Codierungangabe zusätzlich übermittelt werden muss?

          1. Erst denken, dann antworten.
          2. Erst denken, dann bewerten.

          LLAP 🖖

          --
          “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
          1. Hallo und guten Tag,

            Es sei denn, es ist ein BOM in der Datei, was die Zeichencodierung zweifelsfrei erkennen lässt.

            Nein, das ist eindeutig falsch!

            Was genau wäre denn an der Aussage falsch, dass, wenn ein BOM die Zeichencodierung schon zweifelsfrei erkennen lässt, keine Codierungangabe zusätzlich übermittelt werden muss?

            1. Erst denken, dann antworten.
            2. Erst denken, dann bewerten.

            Die Aussage dieses Postings mit dem 'wenn ein BOM' ist <> der Aussage 'ein BOM in der Datei, was die Zeichenkodierung zweifelsfrei erkennen lässt'.

            Und ich freue mich jetzt schon auf deine Kommentare zu den gerade eben von mir als Paranthesezeichen benutzten Apostrophe und mein Ungleichzeichen. ♡

            Und ich erwarte jetzt großes Lob dafür, dass ich trotz repetierender Stromausfälle zu antworten versuche.

            Grüße
            TS

            --
            es wachse der Freifunk
            http://freifunk-oberharz.de
            1. @@TS

              Es sei denn, es ist ein BOM in der Datei, was die Zeichencodierung zweifelsfrei erkennen lässt.

              Nein, das ist eindeutig falsch!

              Was genau wäre denn an der Aussage falsch, dass, wenn ein BOM die Zeichencodierung schon zweifelsfrei erkennen lässt, keine Codierungangabe zusätzlich übermittelt werden muss?

              1. Erst denken, dann antworten.
              2. Erst denken, dann bewerten.

              Die Aussage dieses Postings mit dem 'wenn ein BOM' ist <> der Aussage 'ein BOM in der Datei, was die Zeichenkodierung zweifelsfrei erkennen lässt'.

              Und ich freue mich jetzt schon auf deine Kommentare zu den gerade eben von mir als Paranthesezeichen benutzten Apostrophe und mein Ungleichzeichen. ♡

              Geschenkt. Welche Zeichen du als Ungleichzeichen setzst, ist hier nicht das Problem, sondern dass du ein Ungleichzeichen setzst, wo keins hingehört, und eine Ungleichung konstruierst, die so gar nicht besteht.

              Und ich erwarte jetzt großes Lob dafür, dass ich trotz repetierender Stromausfälle zu antworten versuche.

              Geschenkt. Die Stromausfälle sind hier nicht das Problem. Kein Lob ist zu erwarten für Antwortversuche trotz repetierender Denkausfälle. 😈

              LLAP 🖖

              --
              “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
              1. Hallo und guten Morgen,

                ROTFL

                Grüße
                TS

                --
                es wachse der Freifunk
                http://freifunk-oberharz.de