共用方式為


Base64.DecodeFromUtf8 方法會忽略空格

Convert.FromBase64String(String)Convert.FromBase64CharArray(Char[], Int32, Int32)、和 System.Convert 上的對應 Try 方法會忽略 ASCII 空白字元 ' '、'\t'、'\r' 和 '\n',並允許輸入中任何數量的這類空白。 不過,新增 Base64.DecodeFromUtf8(ReadOnlySpan<Byte>, Span<Byte>, Int32, Int32, Boolean)Base64.DecodeFromUtf8InPlace(Span<Byte>, Int32) 方法時,其不會忽略這些空白字元,而是無法解碼包含空白的任何輸入。 這使得 UTF16 型 API 的行為與 UTF8 型 API 的行為不同。 這也意味著:

有了這項變更,DecodeFromUtf8(ReadOnlySpan<Byte>, Span<Byte>, Int32, Int32, Boolean)DecodeFromUtf8InPlace(Span<Byte>, Int32) 方法現在會忽略輸入中的空白。

先前的行為

Base64.DecodeFromUtf8(ReadOnlySpan<Byte>, Span<Byte>, Int32, Int32, Boolean)Base64.DecodeFromUtf8InPlace(Span<Byte>, Int32) 無法處理包含空白的輸入,並在遇到任何空白時傳 OperationStatus.InvalidData

新的行為

Base64.DecodeFromUtf8(ReadOnlySpan<Byte>, Span<Byte>, Int32, Int32, Boolean)Base64.DecodeFromUtf8InPlace(Span<Byte>, Int32) 現在會忽略輸入中的空白 (特別是 ' '、'\t'、'\r'和 '\n'),其符合 Convert.FromBase64String(String) 的行為。

導入的版本

.NET 8 Preview 5

中斷性變更的類型

此變更為行為變更

變更原因

已進行變更,以便:

如果程式碼的新行為有問題,您可以呼叫 IndexOfAny(" \t\r\n"u8) 來搜尋先前觸發 InvalidData 結果的空白輸入。

受影響的 API