c# - Encoding.RegisterProvider(CodePagesEncodingProvider.Instance) 不添加额外的编码提供者

标签 c# encoding .net-core nuget-package codepages

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

我已经添加了来自 this pageSystem.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 Core SDK 2.0.2 后,一切开始正常运行,我可以使用 Encoding.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() 方法应该在添加更多编码后返回所有可用的编码。

关于c# - Encoding.RegisterProvider(CodePagesEncodingProvider.Instance) 不添加额外的编码提供者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46994907/

相关文章:

ruby - Rails web 开发人员什么时候需要开始担心字符编码?

c# - 其请求中包含 Stream 的 ServiceStack 服务会破坏元数据页面

c# - 如何识别我的代码何时在 C# 中进行测试?

php - Javascript字节数组到二进制字符串?

c# - 如何在 Visual Studio 2015 中获取部分类型的所有部分定义?

c# - LINQ GroupBy child 的 child

c# - 如何运行可能同步或可能异步的代码?

ruby-on-rails - 如何将任何 HTTParty.get 响应转换为 UTF-8

c# - 将 Google map 包含在 .Net Core 中的正确方法?

c# - 从 Lumia 1020 访问气压计数据