Events
Mar 17, 9 PM - Mar 21, 10 AM
Join the meetup series to build scalable AI solutions based on real-world use cases with fellow developers and experts.
Register nowThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
The UTF-7 encoding is no longer in wide use among applications, and many specs now forbid its use in interchange. It's also occasionally used as an attack vector in applications that don't anticipate encountering UTF-7-encoded data. Microsoft warns against use of System.Text.UTF7Encoding because it doesn't provide error detection.
Consequently, the following APIs are marked obsolete, starting in .NET 5. Use of these APIs generates warning SYSLIB0001
at compile time.
If you're using Encoding.UTF7 or UTF7Encoding within your own protocol or file format:
Switch to using Encoding.UTF8 or UTF8Encoding. UTF-8 is an industry standard and is widely supported across languages, operating systems, and runtimes. Using UTF-8 eases future maintenance of your code and makes it more interoperable with the rest of the ecosystem.
If you're comparing an Encoding instance against Encoding.UTF7:
Instead, consider performing a check against the well-known UTF-7 code page, which is 65000
. By comparing against the code page, you avoid the warning and also handle some edge cases, such as if somebody called new UTF7Encoding()
or subclassed the type.
void DoSomething(Encoding enc)
{
// Don't perform the check this way.
// It produces a warning and misses some edge cases.
if (enc == Encoding.UTF7)
{
// Encoding is UTF-7.
}
// Instead, perform the check this way.
if (enc != null && enc.CodePage == 65000)
{
// Encoding is UTF-7.
}
}
If you must use the obsolete APIs, you can suppress the warning in code or in your project file.
To suppress only a single violation, add preprocessor directives to your source file to disable and then re-enable the warning.
// Disable the warning.
#pragma warning disable SYSLIB0001
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0001
To suppress all the SYSLIB0001
warnings in your project, add a <NoWarn>
property to your project file.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0001</NoWarn>
</PropertyGroup>
</Project>
For more information, see Suppress warnings.
.NET feedback
.NET is an open source project. Select a link to provide feedback:
Events
Mar 17, 9 PM - Mar 21, 10 AM
Join the meetup series to build scalable AI solutions based on real-world use cases with fellow developers and experts.
Register now