C# - 如何将ctrl + A输入变成笑脸?

时间:2014-12-18 06:42:08

标签: c#

在深入了解Console.ReadLine()的过程中,我发现了一些非常特殊的东西。

我在C#

的控制台应用程序中的Main方法中编写了以下代码
string str = Console.ReadLine();
Console.WriteLine(str);
Console.WriteLine(str.Trim());
Console.ReadLine();

当我运行代码时,我输入了ctrl + A并按下回车键。我看到表情符号(不能发布图像,因为我还没有权限这样做)。

我想明白,如何展示笑脸?不应该显示^ A或空/空(空,因为当我尝试调试它时,它显示字符串值为“”。)

2 个答案:

答案 0 :(得分:4)

如果您查看Console使用的Encoding,那么您可以看到它使用的是IBM437。

现在转到页面:http://en.wikipedia.org/wiki/Code_page_437

你会发现1有笑脸。

当您按ctrl + A时,它将被转换为1.

所以你得到那个笑脸。

        string str = Console.ReadLine();            
        Console.WriteLine((int)str[0]);  // Integer value of character.
        // Console.OutputEncoding ( to get further detail)
        Console.ReadLine();

答案 1 :(得分:3)

笑脸就是控制台显示U+0001(标题开头)的方式 - 当你输入Ctrl-A时,显然是从控制台读取输入的字符......就像你输入Ctrl-G的方式一样,你得到U+0007(铃声)。

这不是真正的.NET行为,就像Windows控制台行为(输入和输出)一样 - 例如,我可以在Java中重现完全相同的行为。