为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕慕森 2019-11-30 13:34:40
当为.NET 4编译时,此程序运行良好,但为.NET Core编译时,该程序运行正常。我了解不支持编码的错误,但无法解决。Public Class Program    Public Shared Function Main(ByVal args As String()) As Integer        System.Text.Encoding.GetEncoding(1252)    End FunctionEnd Class
查看完整描述

3 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

要做到这一点,你需要注册的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);


查看完整回答
反对 回复 2019-11-30
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

请写出:


<ItemGroup>

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

</ItemGroup>

在csproj。


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


并将此代码作为示例:


public class MyClass

{

    static MyClass()

    {

        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

    }

}


查看完整回答
反对 回复 2019-11-30
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

我认为重要的一点是,如果您的编码存储为同一类的静态只读字段或静态const,则静态构造函数将无法工作。访问字段时不会及时执行。解决此问题的一种方法是使用lambda属性:public static Encoding Windows1252 => Encoding.GetEncoding(1252)

查看完整回答
反对 回复 2019-11-30
  • 3 回答
  • 0 关注
  • 474 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信