Vb.net .NET核心不';我不知道Windows 1252,如何修复?
这个程序在为.NET4编译时运行良好,但在为.NETCore编译时却不能。我理解编码不受支持的错误,但不知道如何修复它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.
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)
givesnull
的形式获得ISO-8859-1代码页)。
dotnet add package System.Text.Encoding.CodePages