.NET Core не знает о Windows 1252, как исправить?
Эта программа отлично работает при компиляции для .NET 4, но при компиляции для .NET Core. Я понимаю, что ошибка в кодировке не поддерживается, но не как ее исправить.
public class Program
{
public static int Main(string[] args)
{
System.Text.Encoding.GetEncoding(1252);
}
}
Ответы
Ответ 1
Для этого вам нужно register CodePagesEncodingProvider
из пакета System.Text.Encoding.CodePages
.
Для этого установите пакет System.Text.Encoding.CodePages:
dotnet add package System.Text.Encoding.CodePages
Затем (после неявного или явного запуска dotnet restore
) вы можете вызвать:
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
var enc1252 = Encoding.GetEncoding(1252);
В качестве альтернативы, если вам нужна только одна кодовая страница, вы можете получить ее напрямую, без регистрации:
var enc1252 = CodePagesEncodingProvider.Instance.GetEncoding(1252);
Ответ 2
Пожалуйста, напишите:
<ItemGroup>
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.3.0" />
</ItemGroup>
в csproj.
В консоли пакета напишите 'dotnet restore', восстановите сборки.
и прочесть этот код для образца:
public class MyClass
{
static MyClass()
{
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
}