title: Stringprep
text: # Stringprep
  
  Stringprep est un protocole normalisé par l'IETF décrivant les transformations qui doivent être effectuées sur des chaînes de caractères Unicode avant utilisation par d'autres protocoles.
  
  ## Caractéristiques
  
  Unicode permet en effet plusieurs formes pour un même texte et il est souvent nécessaire de mettre sous une forme canonique un texte Unicode, par exemple avant des opérations de comparaison. Même le jeu de caractères ASCII a parfois de telles opérations mais elles sont en général bien plus simples que Stringprep (la plus courante est le passage tout en majuscules, pour pouvoir faire des recherches ou des comparaisons indépendantes de la casse).
  
  Stringprep ne spécifie pas directement quelle canonicalisation doit être effectuée. Il donne une série de choix et chaque profil de Stringprep va indiquer quels choix ont été faits. Par exemple, Stringprep donne des tables de caractères qui peuvent être interdits et chaque profil choisit quelles tables il interdit effectivement.
  
  Stringprep est normalisé dans le RFC $3454^,,$ mais reste à l'état de proposition, probablement en raison du faible nombre d'implémentations logicielles notoires largement déployées. Les deux profils les plus répandus aujourd'hui sont nameprep, utilisé dans IDN et SASLprep, utilisé pour des noms d'utilisateur soumis à authentification.
  
  ## Implémentations logicielles
  
  * GNU Libidn
  * Implémentation en Tcl.
  