首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)不添加额外的编码提供程序。

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)不添加额外的编码提供程序。
EN

Stack Overflow用户
提问于 2017-10-28 22:00:01
回答 2查看 17.8K关注 0票数 9

我正在开发一个netcoreapp2.0控制台应用程序,我需要从.NET访问整个编码包。

我已经将System.Text.Encoding.CodePages Version=4.4.0 Nuget包从此页添加到我的项目中,并多次清理/恢复了该项目。

但是,我无法获得我需要的额外编码。

以下代码:

代码语言:javascript
复制
Console.WriteLine(Encoding.GetEncodings().Length);
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
Console.WriteLine(Encoding.GetEncodings().Length);

返回:

代码语言:javascript
复制
8
8

并且不向Encoding类添加额外的编码。

以下是我在我的项目中的所有参考资料:

代码语言:javascript
复制
<PackageReference Include="Microsoft.Extensions.Configuration" Version="2.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="2.0.0" />
<PackageReference Include="System.Data.HashFunction.xxHash" Version="2.0.0-ci-00012" />
<PackageReference Include="Nager.PublicSuffix" Version="1.1.0" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.4.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.0.0" />

<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />

我在这里做错什么了吗?

更新

在重新安装了.NET CoreSDK2.0.2之后,事情开始很好了,我可以使用Encoding.GetEncoding()方法使用扩展编码页,但是Encoding.GetEncodings()仍然返回最初的8个编码代码页。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-30 14:01:31

更新2022年8月:

感谢扎波的评论,我们知道虽然.net框架4.8不需要这个解决方案,但.net 6.0需要它。

我补充这一点,是为了回应加布里埃尔·雷纳的建议,即它可能也会在未来帮助其他人。

我清理了Nuget缓存,修复了我的".NET CoreSDK2.0.2“安装,完成了”解决方案和项目清理“并重新构建了我的项目,Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)代码开始正常工作。

现在,我可以使用Encoding.GetEncoding()方法访问额外的代码页,但是在添加额外编码之后,仍然可以从Encoding.GetEncodings()方法获得相同的编码列表。

从我的角度来看,Encoding.GetEncodings()方法应该在添加了更多编码之后返回所有可用的编码。

票数 7
EN

Stack Overflow用户

发布于 2020-01-24 07:42:45

安装nuget软件包: System.Text.Encoding & System.Text.Encoding.CodePages

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46994907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档