Prüfen, ob Zeichen im aktuellen Zeichensatz sind

  • Also so in etwa, wie es im Titel steht. Es geht um irgendwelche Sonderzeichen, Icons oder weiß der Geier was, das Leute da aus Word in Eingabeformular kopieren und die Webseite das dann nicht darstellen kann.

    Schaut dann so aus:

    Fehlermeldung vom W3C-Validator:

    "Document uses the Unicode Private Use Area(s), which should not be used in publicly exchanged documents. (Charmod C073)"

    Lässt sich das irgendwie unterbinden? Also so im Sinne von, schmeiß alles raus, was nicht im UTF8 enthalten ist?

    Ich weiß, dass man Zeichen per RegEx ganz einfach festlegen kann, also a-z oder 0-9 etc. Aber das ist zu fehleranfällig, denn es gibt so viele in den verschiedenen Sprachen, die ich quasi alle irgendwie freigeben müsste. Daher die Frage, ob das nicht auch einfach über Zeichensatz geht. "Alles was nicht UTF8 ist, löschen".

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • So, etwas weiter, aber hilft alles nix. An sich muss nicht alles raus, was nicht utf8 ist, denn der Code-Bereich ist UTF8. Raus muss eigentlich die "Private Use Area" im Bereich U+E000 bis U+F8FF, Basis-Ebene, sowie Ebene 15 und 16.. Gut, das geht sogar, aber in dem Bereich scheinen wohl auch noch andere Zeichen zu sein. Anführungszeichen, Semikolon, Euro-Zeichen und noch einige andere sind dann auch weg :(

    PHP hat zwar mit FILTER_FLAG_STRIP_HIGH oder FILTER_FLAG_STRIP_LOW schöne Filter, aber unbrauchbar, denn die schmeißen Zeilenumbruch, Tabulatur, sämtliche Satzzeichen, Gänsefüßchen, Apostroph etc auch gleich mit weg.

    Und die Regex-Anweisung [:print:] kann man auch knicken, die killt auch fast alles.

     << Mist, hier geht das auch.

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • Ok, danke, muss ich mir mal ansehen, habe es heute Mittag nur kurz überflogen. Die Beispiele sahen allerdings nicht so vielversprechend aus, die filterten zu viel weg.

    Und das ist auch genau das Problem mit einer White-List, dass ist eben gar nicht weiß, was ich alles brauche. Bin z.B. eben per Zufall über den Ort "Løkken" gestolpert. Das "ø" brauche ich also schon mal. Nur was noch alles? Das andere Problem eben, wie gibt man was frei, das man a) nicht alles kennt und b) auf der Tastatur gar nicht schreiben kann?

    Daher war mein Grundgedanke ja eigentlich eher weder Black- noch White-List, sondern mit den Ranges der Zeichen zu arbeiten. Aber innerhalb der "Private Use Area" scheint sich wohl auch z.B. das €-Zeichen zu befinden, denn das ist auch weg, wenn ich den Bereich sperre.

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(