我正在开发一个netcoreapp2.0控制台应用程序,我需要从.NET访问整个编码包。
我已经将System.Text.Encoding.CodePages Version=4.4.0 Nuget包从此页添加到我的项目中,并多次清理/恢复了该项目。
但是,我无法获得我需要的额外编码。
以下代码:
Console.WriteLine(Encoding.GetEncodings().Length);
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
Console.WriteLine(Encoding.GetEncodings().Length);返回:
8
8并且不向Encoding类添加额外的编码。
以下是我在我的项目中的所有参考资料:
<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个编码代码页。
发布于 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()方法应该在添加了更多编码之后返回所有可用的编码。
发布于 2020-01-24 07:42:45
安装nuget软件包: System.Text.Encoding & System.Text.Encoding.CodePages
https://stackoverflow.com/questions/46994907
复制相似问题