Je teste comment une partie de mon code gère les mauvaises données, et j'ai besoin de quelques séries d'octets UTF-8 invalides.
Pouvez-vous en publier, et idéalement, une explication de la raison pour laquelle ils sont mauvais / où vous les avez obtenus?
Réponses:
Jetez un œil à la capacité de décodeur UTF-8 de Markus Kuhn et au fichier de test de résistance
Vous trouverez des exemples de nombreuses irrégularités UTF-8, y compris des octets de départ solitaires, des octets de continuation manquants, des séquences trop longues, etc.
la source
En PHP:
De http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php#54805
la source
, ̆ était particulièrement mauvais. Je le vois comme combiné sur ubuntu.
virgule
la source
L'idée de modèles de séquences d'octets mal formées peut être obtenue à partir du tableau des séquences d'octets bien formées. Voir « Tableau 3-7. Séquences d'octets UTF-8 bien formées » dans la norme Unicode 6.2.
Voici les exemples générés à partir de U + 24B62. Je les ai utilisés pour un rapport de bogue: le bogue # 65045 mb_convert_encoding casse un caractère bien formé
La simplification excessive de la plage d'octets de fin ([0x80, 0xBF]) peut être vue dans les différentes bibliothèques.
la source
Fuzz Testing - génère une séquence aléatoire d'octets. Très probablement, vous obtiendrez des séquences illégales tôt ou tard.
la source
srand()
conseil est une bonne idée, cela pourrait aider d'autres personnes ici.