宝哥软件园

解决ASP 网核心在输出中文时乱码的问题

编辑:宝哥软件园 来源:互联网 时间:2021-09-07

前言

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

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

问题重现

新建控制台和站点

公共类程序{公共静态void Main(字符串[]参数){ Console .WriteLine(“”您好,北京欢迎你');控制台read();} }站点

公共类启动{ //此方法由运行时调用。使用此方法向容器添加服务。//有关如何配置应用程序的更多信息,请访问http://go.microsoft.com/fwlink/?LinkID=398940公共void ConfigureServices(IServiceCollection services){ }//此方法由运行时调用。使用此方法配置超文本传送协议请求管道公共空间配置(IApplicationBuilder)应用程序,IHostingEnvironment env,ILoggerFactory记录器工厂){记录器工厂.AddConsole();if (env .IsDevelopment()) { app .usedeveloper异常页();}应用程序.运行(异步(上下文)={等待上下文.响应WriteAsync('您好,北京欢迎你');});} }

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

公共静态void Main(字符串[]参数){控制台.WriteLine(“”您好,北京欢迎你');尝试{控制台.写线(编码GetEncoding(' GB2312 ');} catch(异常例如){控制台.WriteLine(例如。消息);}控制台read();} }

“GB2312”不是受支持的编码名称。有关定义自定义编码的信息,请参见编码文档RegisterProvider .方法。参数名称:名称

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

尝试{编码注册提供商(代码页编码提供商.实例);控制台。写线(编码GetEncoding(' GB2312 ');} catch(异常例如){控制台.WriteLine(例如。消息);}控制台read();CodePagesEncodingProvider在包系统。文本。编码。代码页中

系统文本。编码。代码页/4。0 .1 ' : { ' type ' : ' package ',' dependencies': { 'Microsoft .平台' : '1.0.1 ','系统。集合' : '4.0.11 ','系统。全球化' : '4.0.11 ','系统IO': '4.1.0 ','系统。反射' : '4.1.0 ','系统。资源。资源管理器' : '4.0.1 ','系统。运行时' : '4.1.0 ','系统。运行时。扩展' : '4.1.0 ','系统。运行时。处理' : '4.0.1 ','系统。运行时InteropServices': '4.1.0 ','系统。文本。编码' : '4.0.11 ','系统。线程' : '4.0.11' },'编译: { '参考/网络标准1.3/系统.文字。编码。代码页。dll ' : { },' runtimeTargets ' : { ' runtime/UNIX/lib/netstandard 1.3/System .文字。编码。代码页。dll ' : { '资产类型' : '运行时',' rid': 'unix' },'运行时/win/lib/netstandard 1.3/System .文字。编码。代码页。dll ' : { '资产类型' : '运行时',' rid': 'win' } } },好了,我们修改下代码,先注册,然后输出中文

尝试{编码。register Provider(CodePageSenCodingProvider。实例);控制台。写线(编码。GetEncoding(' GB2312 ');控制台。WriteLine(‘你好,北京欢迎你’);} catch(异常ex) { Console。WriteLine(例如。消息);}

摘要

因此,当您在页面或控制台上输出中文时,您应该注意注册提供商。以上就是本文的全部内容。希望这篇文章的内容对你的学习或工作有所帮助。有问题可以留言交流。

涉及

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

更多资讯
游戏推荐
更多+