dedlfix: Mein lieber Valigator

Beitrag lesen

Hi!

Was würde auch
   encode('iso-8859-1', "x{FFFD}",0 )
ergeben?
"If CHECK is 0, (en|de)code will put a substitution character in place of a malformed character. [...]

Heraus kommt das "?" 0x3f.
Das ist nun aber nicht geeignet zum testen.

Da hab ich noch ein Beispiel. Das ist zwar etwas konstruiert, zeigt aber, dass es eine Möglichkeit gibt, bei der man Verstand braucht, um den Text richtig zu interpretieren.

"Ich will Umlaute haben, stattdessen sehe ich immer nur ä, ö und ü."

Stell dir vor, der Satz sei ISO-8859-1-kodiert. Beachte außerdem, dass er nur ASCII-Zeichen enthält, außer den drei verkorksten Umlauten. Du kannst ihn als ISO-8859-1 interpretieren und erhältst genau die Bedeutung, die der Autor haben wollte. Du kannst ihn aber auch als UTF-8 interpretieren, dann siehst du die Umlaute und fragst dich, was der Typ will - sind doch welche da.

Die andere Möglichkeit
   encode('iso-8859-1', "x{FFFD}",1 )
"If CHECK is 1, methods will die on error immediately with an error message. [...]

Zumindest weißt du, dass keine gültige UTF-8-Sequenz vorliegt. Eine andere Aussage kannst du nicht treffen - ohne Sinn-Interpreter.

Wenn es in den zu prüfenden Texten nicht um (fehlerhafte) Zeichenkodierungen geht, und du die Anzahl der vorkommenden Kodierungen einschränken kannst, dann kann die die Rate-Methode einen groben Anhaltspunkt zur Bestimmung bieten. Aber mehr nicht. Denn wie du selbst schon festgestellt hast, lässt sich bei der ISO-8859-Familie nicht ermitteln, welche es nun sein soll. Die Rate-Methode ist also nur bei UTF-8 versus ein Verteter von ISO-8859 und Verwandten (à la Windows-1252) mit einigermaßen Treffsicherheit anwendbar. Eventuell können noch weitere Mehrbyte-Kodierungen ins Spiel kommen. Solange man Kriterien findet, die besagen, dass die Wahrscheinlichkeit eines sinnvollen Textes beim Auftreten einer bestimmten Bytekombination gering und die Fehlerquote nicht allzu hoch ist, und man somit alle außer einer Kodierung ausschließen kann, hat man vermutlich diese übrige Kodierung vorliegen.

Fazit: Alles Mist, wenn man die Originalkodierung nicht kennt.

Lo!

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