Partager via


Les méthodes Base64.DecodeFromUtf8 ignorent les espaces blancs

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 :

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 :

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.

API affectées