Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les méthodes Convert.FromBase64String(String), Convert.FromBase64CharArray(Char[], Int32, Int32), et les méthodes correspondantes Try sur System.Convert ignorent les caractères d’espace blanc ASCII ' ', '\t', '\r', et '\n' et permettent n’importe quelle quantité de ces espaces blancs dans l’entrée. Toutefois, lorsque les méthodes Base64.DecodeFromUtf8(ReadOnlySpan<Byte>, Span<Byte>, Int32, Int32, Boolean) et Base64.DecodeFromUtf8InPlace(Span<Byte>, Int32) ont été ajoutées, elles n’ont pas ignoré les espaces blancs et n’ont pas pu décoder des entrées contenant des espaces blancs. Cela a rendu le comportement des API UTF16 différentes de celles des API UTF8. Cela signifiait également que :
- Les méthodes
Base64.DecodeFromUtf8etBase64.DecodeFromUtf8InPlacene pouvaient pas acheminer les données encodées en UTF base-64 générées par Convert.FromBase64String(String) avec l’option Base64FormattingOptions.InsertLineBreaks. - Les nouvelles méthodes IsValid(ReadOnlySpan<Char>) et IsValid(ReadOnlySpan<Byte>) devraient avoir un comportement incompatible entre elles ou avec leurs méthodes correspondantes pour les données UTF-16 et UTF-8 sur Convert et Base64.
Avec cette modification, les méthodes DecodeFromUtf8(ReadOnlySpan<Byte>, Span<Byte>, Int32, Int32, Boolean) et DecodeFromUtf8InPlace(Span<Byte>, Int32) ignorent désormais les espaces blancs dans l’entrée.
Comportement précédent
Base64.DecodeFromUtf8(ReadOnlySpan<Byte>, Span<Byte>, Int32, Int32, Boolean) et Base64.DecodeFromUtf8InPlace(Span<Byte>, Int32) n’ont pas pu traiter l’entrée qui contenait des espaces blancs et retournées OperationStatus.InvalidData si un espace blanc a été rencontré.
Nouveau comportement
Base64.DecodeFromUtf8(ReadOnlySpan<Byte>, Span<Byte>, Int32, Int32, Boolean) et Base64.DecodeFromUtf8InPlace(Span<Byte>, Int32) ignorez maintenant les espaces blancs (spécifiquement « , « \t », «\r», et «\n») dans l’entrée, qui correspond au comportement de Convert.FromBase64String(String).
Version introduite
.NET 8 Preview 5
Type de changement cassant
Ce changement est un changement de comportement.
Raison de la modification
La modification a été apportée de façon à ce que :
- Les Base64 méthodes peuvent décoder un large éventail de données d’entrée, notamment :
- Données produites par Convert.ToBase64String avec l’option Base64FormattingOptions.InsertLineBreaks.
- Mise en forme courante des données dans les fichiers de configuration et d’autres sources de données réelles.
- Les Base64 méthodes sont cohérentes avec les API de décodage correspondantes sur Convert.
- Les nouvelles Base64.IsValid(ReadOnlySpan<Char>) et Base64.IsValid(ReadOnlySpan<Byte>) API peuvent être ajoutées d'une manière à ce que leur comportement soit cohérent entre elles et avec les API existantes Convert et Base64.
Action recommandée
Si le nouveau comportement pose problème pour votre code, vous pouvez appeler IndexOfAny(" \t\r\n"u8) pour rechercher l'espace blanc dans l'entrée qui aurait déclenché précédemment un résultat InvalidData.