Vb.net .NET核心不';我不知道Windows 1252,如何修复?

Vb.net .NET核心不';我不知道Windows 1252,如何修复?,vb.net,character-encoding,.net-core,windows-1252,Vb.net,Character Encoding,.net Core,Windows 1252,这个程序在为.NET4编译时运行良好,但在为.NETCore编译时却不能。我理解编码不受支持的错误,但不知道如何修复它 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.

这个程序在为.NET4编译时运行良好,但在为.NETCore编译时却不能。我理解编码不受支持的错误,但不知道如何修复它

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
包中删除实例

为此,请安装:

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

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
var enc1252=Encoding.GetEncoding(1252);
或者,如果您只需要一个代码页,则可以直接获取该代码页,无需注册:

var enc1252=CodePagesEncodingProvider.Instance.GetEncoding(1252);
请写:


在csproj

在包控制台中写入“dotnet restore”,还原程序集

以下代码用于示例:

公共类MyClass
{
静态MyClass()
{
RegisterProvider(CodePagesEncodingProvider.Instance);
}
}

C#是MCV在这里的产物;标签不属于您。是回答和提问时使用的语言。我确实属于这里。此外,语法高亮显示在没有它的情况下也会被破坏,它是.NET平台上最常用的语言。@VadimOvchinnikov:我想我宁愿将代码重写为VB.NET中的代码,而VB.NET正是它真正的所在。当时我没有这样做,因为我不想和那些声称VB.NET不受支持的人打交道,而事实上编译器工作得很好。我只需要上传一个比代码长十倍的项目文件。这不是一个真正的解决方案,因为它改变了问题中的代码。但是,如果使用代码页1252的原因是读取/写入ISO-8859-1的字符,则可以使用包含在.NET Core中的28591替换它,而无需添加代码页包:请注意,ISO-8859-1之外的一些字符在代码页1252中是不同的,尤其是欧元符号(€)。此问题的净核心版本为1.0(从日期看应该很明显);这个答案不起作用。我知道它是错误的版本(这在1.1中对我很有效,但它的效果很好。Gracias amigo。我认为有必要补充一点,如果编码存储为同一类上的静态只读字段或静态常量,静态构造函数将不起作用。访问字段时不会及时执行。解决这一问题的一种方法是使用lambda属性:
public static编码Windows1252=>Encoding.GetEncoding(1252)
@masterwok:你不能将其中一个存储在
常量中,如果你想将它存储在
静态只读中,你可以在静态构造函数中初始化它,而不是内联。我应该在哪里安装或在哪里运行
dotnet add package System.Text.Encoding.CodePages
?@Rich你应该从如果您使用的是Visual Studio,您也可以使用包管理器来代替该命令。非常有用!感谢您的救命恩人!对于.NET Core 2.0+中的某些特定编码属性,如HeaderName,上述内容将不会有帮助。这仍然会引发
NotSupportedException
。顺便说一句:一个sh不能将
codepagensencodingprovider.Instance.GetEncoding
与变量输入一起使用。说明:“您不应该调用EncodingProvider.GetEncoding重载”。原因可能是
EncodingProvider
不会为您提供所有编码,但可能只提供其他编码(例如,您不会以
codepagensencodingprovider.Instance.GetEncoding(28591)
gives
null
的形式获得ISO-8859-1代码页)。
dotnet add package System.Text.Encoding.CodePages