.Net Core 连输入中文都变坑了...

前不久Core诞生时候,那个时候我也在项目上没时间去尝那青涩的味道。今天刚刚装上2017就等不及的试了一下。

先创建了一个控制台的应用程序,然后在Main()方法中写了几句话,就等不及的Ctrl+F5,想看看是啥效果。

 1 using System;
 2 
 3 namespace TestCoreConsole
 4 {
 5     class Program
 6     {
 7         static void Main(string[] args)
 8         {
 9             Console.WriteLine("这是中文输出");
10             Console.WriteLine(Console.ReadLine());
11         }
12     }
13 }

发现我输出的中文竟然乱码了,我当时想到应该是编码的问题,然后去调整VS的编码类型,也没有解决中文乱码的问题。

后来我调用了一次Encoding的GetEncoding获取中文编码类型

结果抛出:Unhandled Exception: System.ArgumentException: '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

异常信息中提到了Encodeing.RegisterProvider,后来一看原来.NET Core 在默认情况下是没有注册EncodeProvider,需要我们们手动自己去注册。撸起袖子就注册。

需要先添加CodePagesEncoingProvider的引用,在NuGet包System.Text.Encoding.CodePages里面

using System;
using System.Text;

namespace TestCoreConsole
{
    class Program
    {
        static void Main(string[] args)
        {
       //注册EncodeProvider Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); Console.WriteLine(
"这是中文输出"); Console.WriteLine("This is english output."); Console.WriteLine(Console.ReadLine()); } } }

再次Ctrl+F5 就好了

这样问题是.net core 的模块化的设计原则,但是这样是否能做到跟2015以及之前的离线式的开发?这个问题先留着,日后研究。

转载于:https://www.cnblogs.com/Redefine/p/6877580.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值