C# - 如何将 ctrl+A 输入转换为笑脸

本文关键字:输入 转换 笑脸 ctrl+A | 更新日期: 2023-09-27 18:34:37

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

我在 C# 控制台应用程序中的 Main 方法中编写了以下代码

string str = Console.ReadLine();
Console.WriteLine(str);
Console.WriteLine(str.Trim());
Console.ReadLine();

当我运行代码时,我以ctrl + A输入并按回车键。我看到笑脸(无法发布图像,因为我还没有权限这样做(。

我想了解,它是如何显示笑脸的?它不应该显示 ^A 或空/空白(空,因为当我尝试调试它时,它显示字符串值 a " "。

C# - 如何将 ctrl+A 输入转换为笑脸

如果您查看控制台使用的编码,则可以看到它使用的是 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();

笑脸就是控制台显示 U+0001(标题开头(的方式 - 当您键入 Ctrl-A 时,该字符显然是从控制台读取的输入...有点像键入 Ctrl-G 时得到 U+0007(铃铛(的方式。

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