Подтвердить что ты не робот

.NET Core не знает о Windows 1252, как исправить?

Эта программа отлично работает при компиляции для .NET 4, но при компиляции для .NET Core. Я понимаю, что ошибка в кодировке не поддерживается, но не как ее исправить.

public class Program
{
    public static int Main(string[] args)
    {
        System.Text.Encoding.GetEncoding(1252);
    }
}
4b9b3361

Ответ 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);
    }