📅  最后修改于: 2023-12-03 15:30:17.630000             🧑  作者: Mango
在C#中,控制台应用程序默认使用的编码方案是UTF-16。但是,有些情况下我们需要使用其他编码方案进行输入,比如GBK、GB2312等等。本篇介绍如何更改控制台的输入编码方案。
首先,我们需要获取当前系统的编码方案。可以使用以下代码:
Encoding consoleEncoding = Console.InputEncoding;
Console.WriteLine($"当前控制台输入编码方案为:{consoleEncoding.EncodingName}");
输出结果如下:
当前控制台输入编码方案为:Unicode (UTF-16)
要更改控制台的输入编码方案,只需要设置Console.InputEncoding
属性即可。下面是一个更改为GBK编码方案的例子:
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
Encoding gbEncoding = Encoding.GetEncoding("GBK");
Console.InputEncoding = gbEncoding;
Console.WriteLine($"当前控制台输入编码方案为:{Console.InputEncoding.EncodingName}");
这里用到了CodePagesEncodingProvider
类,它可以提供常用的编码方案,只需要注册即可。尤其需要注意的是,在使用非UTF-8编码方案时,需要先注册对应的编码提供程序。
当我们更改了控制台的输入编码方案后,就可以读取中文字符了。以下是一个简单的示例代码,读取控制台输入的字符,并将字符输出到控制台上:
Console.WriteLine("请输入一个中文字符串:");
string input = Console.ReadLine();
Console.WriteLine($"输入的字符串是:{input}");
如果使用GBK编码方案,输入中文字符“你好”,输出结果如下:
请输入一个中文字符串:
你好
输入的字符串是:你好
本篇介绍了如何更改控制台的输入编码方案。首先,我们通过Console.InputEncoding
属性获取了当前控制台的输入编码方案;然后,使用Encoding
类获取指定编码方案的实例,并设置Console.InputEncoding
属性完成了编码方案的更改。最后,我们可以从控制台读取中文字符,并进行输出。