gpt4 book ai didi

解决asp.net core在输出中文时乱码的问题

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章解决asp.net core在输出中文时乱码的问题由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

前言 。

作为一个.NET Web开发者,我最伤心的时候就是项目开发部署时面对Windows Server上贫瘠的解决方案,同样是神器Nginx,Win上的Nginx便始终不如Linux上的,你或许会说“干嘛不用windows自带的NLB呢”,那这就是我这个小鸟的从众心理了,君不见Stack Overflow 2016最新架构中,用的负载和缓存技术也都是采用在Linux上已经成熟的解决方案吗。没办法的时候找个适合的解决办法是好事,有办法的时候当然要选择最好的解决办法.

所幸,.ASP.NET Core出现了,它顺应了开源大趋势,摆脱了一直为人诟病的Win Server,以ASP.NET的跨平台版本出现在了我们的眼前。暂且不论Benchmark中无聊的性能比较,也不探讨将来是否能和JAVA,PHP Web应用分庭抗礼,但是至少对我们.NET平台开发者来说,我们多了一种开发方向,也多了一个尝试前沿成熟技术的机会。下面话不多说了,本文主要介绍的是asp.net core在输出中文时乱码的问题,下面来一起看看吧.

问题重现 。

新建控制台和站点 。

?
1
2
3
4
5
6
7
8
public class Program
{
public static void Main( string [] args)
{
Console.WriteLine( "您好,北京欢迎你" );
Console.Read();
}
}

站点 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Startup
{
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
}
 
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole();
 
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
 
app.Run(async (context) =>
{
await context.Response.WriteAsync( "您好,北京欢迎你" );
});
}
}

解决asp.net core在输出中文时乱码的问题

那么我们获取“GB2312”编码,然后对其编码呢?

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static void Main( string [] args)
{
Console.WriteLine( "您好,北京欢迎你" );
try
{
Console.WriteLine(Encoding.GetEncoding( "GB2312" ));
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.Read();
}
}

解决asp.net core在输出中文时乱码的问题

'GB2312' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method. Parameter name: name 。

上面的大概意思是Encoding 不支持GB2312编码,需要使用Encoding.RegisterProvider方法进行注册Provider.

?
1
2
3
4
5
6
7
8
9
10
try
{
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
Console.WriteLine(Encoding.GetEncoding( "GB2312" ));
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.Read();

CodePagesEncodingProvider在包System.Text.Encoding.CodePages中 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
"System.Text.Encoding.CodePages/4.0.1" : {
"type" : "package" ,
"dependencies" : {
"Microsoft.NETCore.Platforms" : "1.0.1" ,
"System.Collections" : "4.0.11" ,
"System.Globalization" : "4.0.11" ,
"System.IO" : "4.1.0" ,
"System.Reflection" : "4.1.0" ,
"System.Resources.ResourceManager" : "4.0.1" ,
"System.Runtime" : "4.1.0" ,
"System.Runtime.Extensions" : "4.1.0" ,
"System.Runtime.Handles" : "4.0.1" ,
"System.Runtime.InteropServices" : "4.1.0" ,
"System.Text.Encoding" : "4.0.11" ,
"System.Threading" : "4.0.11"
},
"compile" : {
"ref/netstandard1.3/System.Text.Encoding.CodePages.dll" : {}
},
"runtimeTargets" : {
"runtimes/unix/lib/netstandard1.3/System.Text.Encoding.CodePages.dll" : {
"assetType" : "runtime" ,
"rid" : "unix"
},
"runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll" : {
"assetType" : "runtime" ,
"rid" : "win"
}
}
},

好了,我们修改下代码,先注册,然后输出中文 。

?
1
2
3
4
5
6
7
8
9
10
try
{
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
Console.WriteLine(Encoding.GetEncoding( "GB2312" ));
Console.WriteLine( "您好,北京欢迎你" );
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}

解决asp.net core在输出中文时乱码的问题

总结 。

所以在页面上输出,或者在控制台输出中文的时候,要注意进行注册Provider。以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流.

参考 。

https://msdn.microsoft.com/zh-cn/library/system.text.encoding.registerprovider(v=vs.110).aspx 。

最后此篇关于解决asp.net core在输出中文时乱码的问题的文章就讲到这里了,如果你想了解更多关于解决asp.net core在输出中文时乱码的问题的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com