解决ASP 网核心在输出中文时乱码的问题
前言
作为一个。网络开发者,我最伤心的时候就是项目开发部署时面对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
版权声明:解决ASP 网核心在输出中文时乱码的问题是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。