次の方法で共有


Base64.DecodeFromUtf8 メソッドは空白を無視する

Convert.FromBase64String(String)Convert.FromBase64CharArray(Char[], Int32, Int32)Try、および対応するSystem.Convertメソッドは、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