hello dotnet

前些天,微软发布了.netcore2.0的预览版。本博客记录了开发和运行.netcore程序的流程,讨论了在windows平台下输出中文的注意事项。

 

本文分别论述了Console.WriteLine在.NET Framework以及.NET Core在windows平台中的实现。同时探究了文本编码的一些道道。

 

下面是Console.WriteLine的流程

Console.WriteLine向输出流Out中写入数据,输出流Out是StreamWriter,StreamWriter的编码为Encoding.OutputEncoding

uint cp = Win32Native.GetConsoleOutputCP();
_outputEncoding = Encoding.GetEncoding((int) cp);
 return _outputEncoding;

上面代码中的cp是936,但是,.Framework获取到的_outputEncoding是DBCSEncoding,.NetCore获取到的是UFT8.

.NetCore中的注释如下

// For netcore we use UTF8 as default encoding since ANSI isn't available

因此,netcore在控制台中的输出可能会是乱码。


有两种途径可以解决:
1.在进行任何输出之前执行下面的语句
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

2.将控制台的代码页修改为UTF8,即65001


 

转载于:https://www.cnblogs.com/songqiang/p/hello_dotnet.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值