.NET Core/5+ 使用中文编码

异常问题'GBK' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method. (Parameter 'name')

.NET Framework 中默认支持所有系统安装的编码,无需额外操作。而在 .NET Core/5+ 出于性能和应用体积优化仅支持部分常用编码。这时候就需要手动添加拓展:

安装NuGet包

  • 命令行

dotnet add package System.Text.Encoding.CodePages
  • Visual Studio 包管理器

右键项目 → 管理 NuGet 包 → 搜索 System.Text.Encoding.CodePages → 安装。

注册编码提供程序

在程序启动时(如 Main 方法或 Startup 类中)注册:

using System.Text;

// 注册编码提供程序(只需一次)
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

使用

  // 获取 GBK 编码实例
  Encoding gbk = Encoding.GetEncoding("GBK");