问题:
今天写自己的一个小项目练练手,编码用的是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}" ); }); }
最后,问题解决~
微信扫码查看本文
发表评论