.NET Core 不知道 Windows 1252,如何解决?

.NET Core doesn't know about Windows 1252, how to fix?

此程序在为 .NET 4 编译时工作正常,但在为 .NET Core 编译时却不行。我了解有关不支持编码的错误,但不知道如何修复它。

Public Class Program
    Public Shared Function Main(ByVal args As String()) As Integer
        System.Text.Encoding.GetEncoding(1252)
    End Function
End Class

为此,您需要 register the CodePagesEncodingProvider 来自 System.Text.Encoding.CodePages 包的实例。

为此,安装 the System.Text.Encoding.CodePages package

dotnet add package System.Text.Encoding.CodePages

然后(在隐式或显式 运行 dotnet restore 之后)你可以调用:

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
var enc1252 = Encoding.GetEncoding(1252);

或者,如果您只需要那个代码页,您可以直接获取它,无需注册:

var enc1252 = CodePagesEncodingProvider.Instance.GetEncoding(1252);

请写:

<ItemGroup>
    <PackageReference Include="System.Text.Encoding.CodePages" Version="4.3.0" />
</ItemGroup>

在 csproj 中。

在包控制台中写入“dotnet restore”,恢复程序集。

并编写示例代码:

public class MyClass
{
    static MyClass()
    {
        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
    }
}