Frage

Ich bin Tring Form Validierungseinheit zu schaffen, die, zusätzlich zu den „normalen“ Tests überprüft Codierung als auch.

Laut diesem Artikel http://www.w3.org / international / Fragen / qa-forms-utf-8 die Erlaubte Zeichen sind CR, LF und TAB in Bereich von 0-31, die DEL = 127 nicht erlaubt.

Auf der anderen Seite gibt es Steuerzeichen in Reichweite 0x80-0xA0. In verschiedenen Quellen Ich hatte gesehen, dass sie berechtigt sind, und dass es nicht. Ich hatte auch gesehen, dass dies anders ist für XHTML, HTML und XML.

hatte einige Artikel gesagt, dass FF auch erlaubt ist?

Kann jemand eine gute Antwort mit Quellen zur Verfügung stellen, was gegeben werden kann und was nicht?

EDIT: Auch dort http://www.w3.org/International/questions / qa-Kontrollen eine gewisse Zweideutigkeit

  

Der C1-Bereich wird unterstützt

Aber Tabelle zeigt, dass sie illegal sind und vorherige UTF-8 Validierungen gezeigt ermöglicht es ihnen?

War es hilfreich?

Lösung

Die Unicode-Zeichen in diesen Bereichen gültig sind in HTML 4.01:

0x09..0x0A
0x0D
0x20..0x7E
0x00A0..0xD7FF
0xE000..0x10FFFF    

In XHTML 1.0 ... es ist unklar. Siehe http://cmsmcq.com/2007/C1.xml#o127626258

Andere Tipps

Ich glaube, Sie an dieser falsch sind umsah. Die Ressourcen, die Sie angeben verknüpfen, was codierte Werte gültig sind in (X) HTML , aber es klingt wie Sie die „Antwort“ von einem Web-Formular validieren wollen - wie in, die Werte der verschiedenen Formularsteuer , wie Sie zurück zu Ihrem Server übergeben. In diesem Fall sollten Sie nicht zu suchen, was in (X) HTML gültig ist, aber was gültig ist in der application / x-www-form-urlencoded und möglicherweise auch multipart / form -Daten , MIME-Typ. Die HTML 4.01 Standards für <FORM> Elemente eindeutig fest, dass für application / x-www-form-urlencoded "Nicht-alphanumerische Zeichen durch '% HH' ersetzt":

  

Dies ist der Standard-Inhaltstyp. Formulare mit diesem Inhaltstyp eingereicht werden, müssen wie folgt codiert werden:

     
      
  1. Steuer Namen und Werte sind entkommen. Leerzeichen ersetzt werden durch ‚+‘, und dann sind reservierte Zeichen wie entkam in [RFC1738] , Abschnitt 2.2: Nicht-alphanumerische Zeichen von ‚% HH‘, ein Prozentzeichen und zwei hexadezimale Ziffern, die den ASCII-Code des Zeichens ersetzt werden. Zeilenumbrüche werden als "CR LF" -Paare dargestellt (d.h. `% 0D 0A%).
  2.   
  3. Die Steuer Namen / Werte werden in der Reihenfolge, wie sie im Dokument erscheinen aufgeführt. Der Name wird von dem Wert getrennt durch ‚=‘ und Namen / Wert-Paare werden voneinander getrennt durch ‚&‘.
  4.   

Wie für welche Zeichencodierung enthalten ist, (dh ob %A0 ein non-breaking Raum ist oder ein Fehler), ist, dass durch das accept-charset auf Ihrem <FORM> Elemente Attribut und die Antwort der (gut, wirklich ein GET oder POST Anfrage) Content-Type Header.

  

Postel Gesetz: Seien Sie konservativ in dem, was Sie tun; sein liberal, was Sie von anderen übernehmen.

Wenn Sie Dokumente für andere sind Erzeugung zu lesen, sollten Sie alle Steuerzeichen vermeiden / entkommen, auch wenn sie technisch legal sind. Und wenn Sie Dokumente sind Parsen, sollten Sie sich bemühen, alle Steuerzeichen zu akzeptieren, auch wenn sie technisch illegal sind.

Zu allererst jedem Oktett gültig ist. Die regulären Ausdruck für UTF-8-Sequenzen erwähnt nur einige auslässt von ihnen, wie sie sind eher selten in der Praxis durch einen Benutzer eingegeben werden. Aber das bedeutet nicht, dass sie ungültig sind. Sie sind einfach nicht erwartet werden.

Der erste Link, den Sie erwähnen nicht alles haben mit der Validierung der erlaubten Zeichen in XHTML zu tun ... das Beispiel auf diesem Link wird einfach ein gemeinsames / generic Muster zeigt, ob oder ob nicht Rohdaten zur Detektion ist in utf-8-Codierung oder nicht.

Dies ist ein Zitat aus dem zweiten Link:

  

HTML, XHTML und XML 1.0 nicht unterstützt   der C0-Bereich, mit Ausnahme von HT   (Horizontale Tabellierung) U + 0009, LF   (Line Feed) U + 000A und CR (Carriage   Return) U + 000D. Der Bereich C1   unterstützt, das heißt Sie können die kodieren   steuert direkt oder repräsentieren sie als   NCRs (Numerische Zeichenreferenzen).

So wie ich gelesen das ist:

Jede Steuerzeichen in der C1-Bereich unterstützt, wenn Sie sie kodieren (unter Verwendung von base64 oder Hex-Darstellungen) oder als NCRs darstellen.

Nur U + 0009, U + 000A und U + 000D sind im C0 Bereich unterstützt. Kein anderer Steuercode in diesem Bereich dargestellt werden.

Wenn das Dokument bekannt ist, XHTML zu sein, dann sollten Sie es einfach laden und gegen das Schema validieren.

Was Programmiersprache verwenden Sie? Zumindest für die Java-Bibliotheken existieren die Codierung einer Zeichenfolge (oder Byte-Array) zu überprüfen. Ich denke, ähnliche Bibliotheken auch für andere Sprachen existieren würden.

Sie verstehe ich Ihre Frage richtig: Sie, ob die Daten von einem Formular abgeschickt überprüfen möchten gültig ist, und richtig codiert

?

Wenn ja, warum mehrere Dinge auf einmal? Es wäre viel einfacher sein, diese Kontrollen zu trennen, und sie Schritt, IMHO Schritt durchführen.

  1. Sie möchten überprüfen, dass die übermittelten Formulardaten korrekt kodiert wird (in UTF-8, I sammeln). Wie Erzkanzler Ridcully sagt, das ist einfach in den meisten Sprachen zu überprüfen .
  2. Wenn dann die Codierung korrekt ist, können Sie prüfen, ob es gültige Formulardaten ist.
  3. Wenn dann die Formulardaten gültig sind, können Sie überprüfen, ob die Daten enthalten, was Sie erwarten.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top