问题:
今天写自己的一个小项目练练手,编码用的是Encoding.Default,发现中文都是乱码的。
好嘛,那我Encoding.GetEncoding("gb2312")总行了吧。
然后....

原因:
是由于.NET Core的Default始终是UTF8Encoding
还有,上面的报错,这货根本不支持GB2312的编码。
这个问题资料的官方文档:
解决:
既然他不是原生支持,那么我们就给手动安装一下
需要的是这个包
System.Text.Encoding.CodePages
NuGet命令:
Install-Package System.Text.Encoding.CodePages
当然,直接在NuGet管理器里面下载也可以

最后,就是在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}"
);
});
}最后,问题解决~


微信扫码查看本文
发表评论