.Net Core中文乱码的坑(不支持GB2312)

2022-04-27 19:05:13  阅读 3277 次 评论 0 条

问题:

今天写自己的一个小项目练练手,编码用的是Encoding.Default,发现中文都是乱码的。

好嘛,那我Encoding.GetEncoding("gb2312")总行了吧。

然后....

image.png

原因:

是由于.NET Core的Default始终是UTF8Encoding

还有,上面的报错,这货根本不支持GB2312的编码。

这个问题资料的官方文档:

https://docs.microsoft.com/zh-cn/dotnet/api/system.text.encoding.default?view=netcore-3.1#System_Text_Encoding_Default


解决:

既然他不是原生支持,那么我们就给手动安装一下

需要的是这个包

System.Text.Encoding.CodePages

NuGet命令:

Install-Package System.Text.Encoding.CodePages

当然,直接在NuGet管理器里面下载也可以

image.png

最后,就是在Startup.cs的Configure方法里面注册这个包就好啦~

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);//这个是注册编码的,只要这一行

完整的Configure代码

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);//这个是注册编码的,只要这一行
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseHttpsRedirection();

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                //endpoints.MapControllers();
                endpoints.MapControllerRoute(
                    name:"Default",
                    pattern:"api/{token}/{controller}/{action}"
                );
            });
        }

最后,问题解决~

image.png


微信扫码查看本文
本文地址:https://www.yangguangdream.com/?id=2201
版权声明:本文为原创文章,版权归 编辑君 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?