Eine meiner Anforderungen sagt "Textfeld Name sollte nur UTF-8 Zeichensatz akzeptieren". Ich möchte einen negativen Test durchführen, indem ich einen nicht UTF-8-Zeichensatz eingib. Wie kann ich das machen?Wie kann ich einen Nicht-UTF-8-Zeichensatz erzeugen
Antwort
Wenn Sie fragen, wie eine nicht-UTF-8-Zeichen zu konstruieren, die aus this definition from Wikipedia sollte einfach sein:
Für Codepunkten U + 0000 bis U + 007F, die jeweils Codepunkt ist ein Byte lang und sieht wie folgt aus:
0xxxxxxx // a
Für Codepunkten U + 0080 bis U + 07FF, jeder Codepunkt zwei Bytes lang ist und wie folgt aussehen:
110xxxxx 10xxxxxx // b
Und so weiter.
also ein illegales UTF-8-Zeichen zu konstruieren, die ein Byte lang ist, muss das höchste Bit 1 sein (anders sein Muster a) und die zweithöchsten Bit muss 0 sein (von den Mustern b verschieden sein kann) :
10xxxxxx
oder
111xxxxx
Welche auch von beiden Muster unterscheidet.
Mit der gleichen Logik können Sie illegale Codeunit-Sequenzen erstellen, die mehr als zwei Bytes lang sind.
Sie haben keine Sprache Tag, aber ich hatte es zu testen, so habe ich Java:
for (int i=0;i<255;i++) {
System.out.println(
i + " " +
(byte)i + " " +
Integer.toHexString(i) + " " +
String.format("%8s", Integer.toBinaryString(i)).replace(' ', '0') + " " +
new String(new byte[]{(byte)i},"UTF-8")
);
}
0 bis 31 sind nicht druckbare Zeichen, dann 32 ist der Raum, durch druckbare Zeichen gefolgt:
...
31 31 1f 00011111
32 32 20 00100000
33 33 21 00100001 !
...
126 126 7e 01111110 ~
127 127 7f 01111111
128 -128 80 10000000 �
delete
0x7f
ist und, nachdem es von 128 bis einschließlich 254 sind keine gültigen Zeichen gedruckt. Sie können von der UTF-8 chartable siehe auch:
Codepoint U+007F
wird mit einem Byte 0x7F
(Bits 01111111
) dargestellt, während Codepoint U+0080
mit zwei Bytes dargestellt wird 0xC2 0x80
(Bits 11000010 10000000
).
Wenn Sie nicht vertraut mit UTF-8 sind stark Ich empfehle diesen ausgezeichneten Artikel zu lesen:
- 1. Wie kann ich einen PDF Index von pdfLaTeX erzeugen?
- 2. Wie kann ich dynamisches Javascript erzeugen?
- 3. Wie kann ich einen Spotlight-Effekt erzeugen, der bei Mouseover einen Teil eines Bildes sichtbar macht?
- 4. Wie kann man mit ggplot einen nicht standardmäßigen Plottyp erzeugen?
- 5. kann ich nicht apk unterzeichnet erzeugen
- 6. Wie kann ich einen CSS "gut" -Effekt erzeugen, ähnlich wie BootStap, aber tiefer?
- 7. Wie kann ich sql-Inserts aus pipe-separierten Daten erzeugen?
- 8. Wie kann ich nur ein einzelnes PDF erzeugen
- 9. Wie kann ich sql-Inserts aus pipe-separierten Daten erzeugen?
- 10. Wie kann ich Sounds (eigentlich Musik) mit PHP oder Objective-C erzeugen oder erzeugen?
- 11. Wie kann ich eindeutige Zufallszahlen in PHP erzeugen?
- 12. Wie kann ich Skripte aus einer Javascript-Datei erzeugen?
- 13. Wie kann ich besser Radioknöpfe und Textbeschriftungen dynamisch erzeugen?
- 14. Wie kann ich HTML-Dokumente mit `godoc` erzeugen?
- 15. Wie kann ich eine Spline-Kurve mit glm_gtx_spline :: catmullRom erzeugen?
- 16. Wie kann ich eine ObjectId mit Mungo erzeugen?
- 17. Wie kann ich eine Sequenz von Zahlen in Elixir erzeugen?
- 18. Wie kann ich mehrere Schattierungen von einer bestimmten Grundfarbe erzeugen?
- 19. Wie kann ich in Java Swing einen Schlagschatten, ein inneres Leuchten und ein äußeres Leuchten erzeugen?
- 20. Wie kann ich einen Zeigervektor erzeugen, der auf ein dynamisch zugewiesenes Objekt zeigt?
- 21. Wie kann ich mit setuptools einen console_scripts-Einstiegspunkt erzeugen, der `python -m meinpaket` aufruft?
- 22. In F # wie kann ich einen Ausdruck mit einer Art von Func <obj> erzeugen?
- 23. Wie kann ich einen Android Keystore von einem key.pk8 und certificate.pem erzeugen?
- 24. Wie kann Conan ein FindXXX.cmake erzeugen?
- 25. R: Wie kann ich einen Vektor verketten?
- 26. Wie kann GHC keine Zwischendateien erzeugen?
- 27. In Java möchte ich einen Kompilierungsfehler anstelle eines Laufzeitfehlers erzeugen
- 28. Kann man einen Vektor mit Arrays fester Größe erzeugen?
- 29. Wie soll ich ein Thumbnail-Bild erzeugen?
- 30. Wird diese Situation einen starken Referenzzyklus erzeugen?
über eine Benutzeroberfläche haben Sie eine harte Zeit, dies zu tun. Sie müssen es irgendwie programmatisch tun. – leppie
Beginnen Sie mit der Definition Ihrer * Programmiersprache *, Umgebung und/oder Kontext. Dies hängt sehr davon ab, mit welchem System Sie gerade arbeiten. – deceze
Warum DOWNVOTE für diese Frage? – swapneel