.Net Core Encoding.GetEncoding("GBK"); 报错

在 .NET Framework 4.7.2 中,Encoding.GetEncoding("GBK") 方法仍然可以使用,并返回 GBK 编码的编码器。但是,在 .NET Core 3.0 及更高版本中,Encoding.GetEncoding("GBK") 方法已被弃用,并且不再支持 GBK 编码。

解决

  • 使用 Encoding.GetEncoding(936) 方法来获取 GBK 编码的编码器
  • 使用CodePagesEncodingProvider 该类继承于EncodingProvider 用于支持原Framework中代码页的访问权限 也就是编码方式
    使用方法:
     // 注册编码提供程序
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
    
    在.net core中仅需在Configure中添加即可
    using System.Text;
    using Microsoft.AspNetCore.Builder;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.Hosting;
    
    public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            // 添加 MVC 服务
            services.AddControllersWithViews();
        }
    
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }
    
            // 注册编码提供程序
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
    
            app.UseStaticFiles();
    
            app.UseRouting();
    
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
            });
        }
    }
    
    
posted @ 2024-01-28 20:33  C余L小R鱼  阅读(179)  评论(0编辑  收藏  举报