Partage 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 Try correspondantes sur System.Convert ignorent les espaces blancs ASCII ' ', '\t', '\r' et '\n', et autorisent un nombre illimité d’espaces blancs dans l’entrée. Toutefois, si 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é ces espaces blancs et n’ont pas pu décoder les entrées qui incluaient des espaces blancs. Ainsi, le comportement des API basées sur UTF16 était différent de celui des API basées sur UTF8. Cela signifiait également que :

Avec ce changement, 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) ne pouvaient pas traiter l’entrée contenant des espaces blancs et retournaient OperationStatus.InvalidData en présence d’un espace blanc.

Nouveau comportement

Base64.DecodeFromUtf8(ReadOnlySpan<Byte>, Span<Byte>, Int32, Int32, Boolean) et Base64.DecodeFromUtf8InPlace(Span<Byte>, Int32) ignorent désormais les espaces blancs (spécifiquement ' ', '\t', '\r' et '\n') dans l’entrée, ce 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 du changement

Le changement a été apporté de sorte que :

Si le nouveau comportement est problématique pour votre code, vous pouvez appeler IndexOfAny(" \t\r\n"u8) pour rechercher dans l’entrée l’espace blanc qui aurait précédemment déclenché un résultat InvalidData.

API affectées