这个程序在为.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
这个程序在为.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
要实现此功能,您需要注册System.Text.Encoding.CodePages
包中的CodePagesEncodingProvider
实例。
为此,请安装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);
csproj
的目录中运行它。如果你使用的是 Visual Studio,你也可以使用包管理器而不是命令行。 - svickCodePagesEncodingProvider.Instance.GetEncoding
。https://learn.microsoft.com/en-us/dotnet/api/system.text.codepagesencodingprovider?view=netcore-3.1 上说:“不应调用 EncodingProvider.GetEncoding 重载”。原因可能是 EncodingProvider
不会给你每个编码,而只会给你额外的编码(例如,你不会得到 ISO-8859-1 代码页,因为 CodePagesEncodingProvider.Instance.GetEncoding(28591)
返回 null
)。 - stbFileNotFoundException: Could not load file or assembly 'System.Threading, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified.
。似乎没有人遇到过这个问题。有什么想法吗? - Tom WEncoding encodingByName = Encoding.GetEncoding("Windows-1252");
- undefined<ItemGroup>
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.3.0" />
</ItemGroup>
在 csproj 文件中。
在包控制台中输入 'dotnet restore',以还原程序集。
以下是示例代码:
public class MyClass
{
static MyClass()
{
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
}
}
public static Encoding Windows1252 => Encoding.GetEncoding(1252);
- masterwok这里是关于CodePagesEncodingProvider
的注释:
CodePagesEncodingProvider
类扩展了EncodingProvider
,使这些代码页可用于.NET Core。
因此,您需要首先注册编码提供程序才能使用其他编码,如Windows-1252
。Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
CodePagesEncodingProvider
提供了一个编码提供程序,用于访问在桌面 .NET Framework 中才可用的代码页。
之后,您还可以找到更多的编码,并且可以获取 Windows-1252
:
Encoding win1252 = Encoding.GetEncoding(1252);
System.Text.Encoding.CodePages.dll
才能在某些 .net 版本中使用 CodePagesEncodingProvider
。您需要将 nuget package 添加到您的项目中。Install-Package System.Text.Encoding.CodePages