📜  C#|如何更改控制台的输入编码方案(1)

📅  最后修改于: 2023-12-03 15:30:17.630000             🧑  作者: Mango

C# | 如何更改控制台的输入编码方案

在C#中,控制台应用程序默认使用的编码方案是UTF-16。但是,有些情况下我们需要使用其他编码方案进行输入,比如GBK、GB2312等等。本篇介绍如何更改控制台的输入编码方案。

1. 获取系统编码

首先,我们需要获取当前系统的编码方案。可以使用以下代码:

Encoding consoleEncoding = Console.InputEncoding;
Console.WriteLine($"当前控制台输入编码方案为:{consoleEncoding.EncodingName}");

输出结果如下:

当前控制台输入编码方案为:Unicode (UTF-16) 
2. 更改编码方案

要更改控制台的输入编码方案,只需要设置Console.InputEncoding属性即可。下面是一个更改为GBK编码方案的例子:

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
Encoding gbEncoding = Encoding.GetEncoding("GBK");
Console.InputEncoding = gbEncoding;
Console.WriteLine($"当前控制台输入编码方案为:{Console.InputEncoding.EncodingName}");

这里用到了CodePagesEncodingProvider类,它可以提供常用的编码方案,只需要注册即可。尤其需要注意的是,在使用非UTF-8编码方案时,需要先注册对应的编码提供程序。

3. 读取中文字符

当我们更改了控制台的输入编码方案后,就可以读取中文字符了。以下是一个简单的示例代码,读取控制台输入的字符,并将字符输出到控制台上:

Console.WriteLine("请输入一个中文字符串:");
string input = Console.ReadLine();
Console.WriteLine($"输入的字符串是:{input}");

如果使用GBK编码方案,输入中文字符“你好”,输出结果如下:

请输入一个中文字符串:
你好
输入的字符串是:你好
总结

本篇介绍了如何更改控制台的输入编码方案。首先,我们通过Console.InputEncoding属性获取了当前控制台的输入编码方案;然后,使用Encoding类获取指定编码方案的实例,并设置Console.InputEncoding属性完成了编码方案的更改。最后,我们可以从控制台读取中文字符,并进行输出。