.NET Core doesn't know about Windows 1252, how to fix?
This program works just fine when compiled for .NET 4 but does not when compiled for .NET Core. I understand the error about encoding not supported but not how to fix it.
Public Class Program
Public Shared Function Main(ByVal args As String()) As Integer
System.Text.Encoding.GetEncoding(1252)
End Function
End Class
Solution 1:
To do this, you need to register the CodePagesEncodingProvider
instance from the System.Text.Encoding.CodePages
package.
To do that, install the System.Text.Encoding.CodePages package:
dotnet add package System.Text.Encoding.CodePages
Then (after implicitly or explicitly running dotnet restore
) you can call:
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
var enc1252 = Encoding.GetEncoding(1252);
Alternatively, if you only need that one code page, you can get it directly, without registration:
var enc1252 = CodePagesEncodingProvider.Instance.GetEncoding(1252);
Solution 2:
Please write:
<ItemGroup>
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.3.0" />
</ItemGroup>
in csproj.
In package console write ' dotnet restore', restore assemblies.
and wite this code for sample:
public class MyClass
{
static MyClass()
{
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
}
}