Sdílet prostřednictvím


Metody Base64.DecodeFromUtf8 ignorují prázdné znaky

A Convert.FromBase64String(String)Convert.FromBase64CharArray(Char[], Int32, Int32)odpovídající Try metody ignorují System.Convert prázdné znaky ASCII ' ', '\t', '\r' a '\n' a umožňují, aby všechny takové prázdné znaky byly ve vstupu. Při Base64.DecodeFromUtf8(ReadOnlySpan<Byte>, Span<Byte>, Int32, Int32, Boolean) přidání a Base64.DecodeFromUtf8InPlace(Span<Byte>, Int32) metod však tyto prázdné znaky ignorovaly a místo toho se nepodařilo dekódovat vstup, který obsahoval prázdné znaky. Tím se chování rozhraní API založených na UTF16 liší od chování rozhraní API založených na UTF8. To také znamenalo:

Díky této změně DecodeFromUtf8(ReadOnlySpan<Byte>, Span<Byte>, Int32, Int32, Boolean) teď metody DecodeFromUtf8InPlace(Span<Byte>, Int32) ve vstupu ignorují prázdné znaky.

Předchozí chování

Base64.DecodeFromUtf8(ReadOnlySpan<Byte>, Span<Byte>, Int32, Int32, Boolean) a Base64.DecodeFromUtf8InPlace(Span<Byte>, Int32) nepodařilo se zpracovat vstup, který obsahoval prázdné znaky, a vrátil se OperationStatus.InvalidData , pokud došlo k nějakému prázdnému znaku.

Nové chování

Base64.DecodeFromUtf8(ReadOnlySpan<Byte>, Span<Byte>, Int32, Int32, Boolean) a Base64.DecodeFromUtf8InPlace(Span<Byte>, Int32) teď ve vstupu ignorujte prázdné znaky (konkrétně ', '\t', '\r'a '\n'), které odpovídají chování Convert.FromBase64String(String).

Zavedená verze

.NET 8 Preview 5

Typ zásadní změny

Tato změna je změna chování.

Důvod změny

Změna byla provedena tak, aby:

Pokud je nové chování pro váš kód problematické, můžete volat IndexOfAny(" \t\r\n"u8) hledaný vstup pro prázdné znaky, které dříve aktivovaly InvalidData výsledek.

Ovlivněná rozhraní API