Uno dei miei requisiti dice "Il nome della casella di testo deve accettare solo il set di caratteri UTF-8". Voglio eseguire un test negativo inserendo un set di caratteri non UTF-8. Come posso fare questo?Come posso generare un set di caratteri non UTF-8
risposta
Se ti stai chiedendo come costruire un non-caratteri UTF-8, che dovrebbe essere facile da this definition from Wikipedia:
Per i punti di codice U + 0000 e U + 007F, ogni codepoint è uno lunga di byte e si presenta così:
0xxxxxxx // a
Per i punti di codice U + 0080 tramite U + 07FF, ogni codepoint è lungo due byte e simile a questa:
110xxxxx 10xxxxxx // b
E così via.
Quindi, per costruire un carattere UTF-8 illegale lungo un byte, il bit più alto deve essere 1 (per essere diverso dal pattern a) e il secondo bit più alto deve essere 0 (per essere diverso dal pattern b) :
10xxxxxx
o
111xxxxx
che si differenzia anche da entrambi i modelli.
Con la stessa logica, è possibile creare sequenze di codeunit illegali lunghe più di due byte.
Non hai contrassegnare una lingua, ma ho dovuto provarlo, così ho utilizzato 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 a 31 sono i caratteri non stampabili, quindi 32 è lo spazio, seguito da caratteri stampabili:
...
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
e dopo, da 128 inclusivamente fino a 254 caratteri non validi vengono stampati. Si può vedere dalla anche la UTF-8 chartable:
Codepoint U+007F
è rappresentato con un byte (bit 0x7F
01111111
), mentre codepoint U+0080
è rappresentato con due byte 0xC2 0x80
(bit 11000010 10000000
).
Se non si ha familiarità con UTF-8 vi consiglio vivamente di leggere questo ottimo articolo:
- 1. Come impostare il set di caratteri mongodb su utf8?
- 2. NancyFx: impostare set di caratteri di default utf8
- 3. Come modificare tutte le tabelle nel mio database in un set di caratteri UTF8?
- 4. PHP preg_split utf8 caratteri
- 5. Codeigniter che non accetta "utf8mb4" come set di caratteri predefinito
- 6. come impostare il set di caratteri predefinito?
- 7. In perl, come posso sostituire un set di caratteri con un diverso set di caratteri in un singolo passaggio?
- 8. Come eliminare un set di caratteri stranieri?
- 9. È necessario "SET CARACTER SET utf8"?
- 10. Come ripetere un set di caratteri
- 11. primefaces fileupload filtro con filtro utf8 caratteri
- 12. backslash in un set di caratteri di un'espressione regolare python (come specificare il set di caratteri "non un backslash")?
- 13. UTF8 PostgreSQL Crea database come MySQL (tra cui set di caratteri, codifica e lc_type)
- 14. Imposta set di caratteri usando MySQLi
- 15. SQL Server: imposta set di caratteri (non fascicolazione)
- 16. MySQL - Convertire i caratteri latin1 su un tavolo UTF8 in UTF8
- 17. Caratteri non alfanumerici di striscia dall'inglese UTF8 + stringa inglese
- 18. Impossibile cambiare il set di caratteri in MySQL 5.7 (da latino a utf8)
- 19. Set caratteri Caratteri speciali
- 20. pyMySQL set set di caratteri di collegamento
- 21. Imposta set/set di caratteri tabella utilizzando Hibernate Dialect?
- 22. Hibernate/JPA import.sql utf8 caratteri corrotti
- 23. Regex per rimuovere caratteri non alfanumerici da stringhe UTF8
- 24. set di caratteri tra PHP e MySQL
- 25. URLConnection non ottiene il set di caratteri
- 26. ORA-12704: Set di caratteri non corrispondente
- 27. Come controllare il set di caratteri della stringa?
- 28. Come creare un db utf8 con mysqladmin
- 29. Codeigniter e set di caratteri
- 30. mysql: SET NAMES utf8 su ogni connessione?
Via un'interfaccia utente si avrà un momento difficile fare questo. Dovrai in qualche modo farlo in modo programmatico. – leppie
Inizia definendo il * linguaggio di programmazione *, l'ambiente e/o il contesto. Questo molto varierà a seconda del sistema con cui stai lavorando/su/in. – deceze
perché DOWNVOTE per questa domanda? – swapneel