Roj*_*Gh. 7 c# encoding codepages nuget-package .net-core
我正在开发一个netcoreapp2.0控制台应用程序,我需要从 .NET 访问整个编码包。
我已经将此页面中的System.Text.Encoding.CodePages Version=4.4.0Nuget 包添加到我的项目中,并多次清理/恢复了该项目。
但是我无法获得我需要的额外编码。
以下代码:
Console.WriteLine(Encoding.GetEncodings().Length);
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
Console.WriteLine(Encoding.GetEncodings().Length);
Run Code Online (Sandbox Code Playgroud)
返回:
8
8
Run Code Online (Sandbox Code Playgroud)
并且没有向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" />
Run Code Online (Sandbox Code Playgroud)
我在这里做错了吗?
更新
再次重新安装 .NET Core SDK 2.0.2 后,事情开始正常工作,我可以使用扩展的编码代码页 usingEncoding.GetEncoding()方法,但是Encoding.GetEncodings()仍然返回初始的 8 个编码代码页。
2022 年 8 月更新:
感谢zapoo的评论,我们知道虽然 .net Framework 4.8 不需要该解决方案,但 .net 6.0 需要它
我将其添加为关于Gabriel Rainha建议的答案,该建议将来也可能对其他人有所帮助。
我清理了 Nuget 缓存,修复了“.NET Core SDK 2.0.2”安装,执行了“解决方案和项目清理”并重建了我的项目,代码Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)开始正常工作。
现在我可以使用该方法访问额外的代码页,但是在添加额外的编码后,Encoding.GetEncoding()我仍然从方法中获得相同的编码列表。Encoding.GetEncodings()
从我的角度来看,该Encoding.GetEncodings()方法应该在添加更多编码后返回所有可用的编码。
| 归档时间: |
|
| 查看次数: |
11248 次 |
| 最近记录: |