다음을 통해 공유


Base64.DecodeFromUtf8 메서드는 공백을 무시함

System.ConvertConvert.FromBase64String(String), Convert.FromBase64CharArray(Char[], Int32, Int32) 및 해당 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 미리 보기 5

호환성이 손상되는 변경의 형식

이 변경 사항은 동작 변경입니다.

변경 이유

이렇게 변경되었습니다.

새 동작이 코드에 문제가 있는 경우 IndexOfAny(" \t\r\n"u8)를 호출하여 이전에 InvalidData 결과를 트리거한 공백에 대한 입력을 검색할 수 있습니다.

영향을 받는 API