【问题标题】:Control Characters and How OS/TextEditors interprets them?控制字符以及操作系统/文本编辑器如何解释它们?
【发布时间】:2012-10-02 10:21:53
【问题描述】:

我正在阅读一些关于控制字符的内容,尤其是换行符(将重点关注这一点)。通过后 http://en.wikipedia.org/wiki/Control_characters,知道 \n 是 unix 中的行字符 而它在 Windows 中是 \r\n 。现在我得到了一个问题,在迭代时操作系统是如何出现的 ASCII 代码,因为当我们在键盘上键入任何给定字符时,我印象深刻,任何操作系统都会发送相同的 位和编辑器解释该位并显示相应的字符。 看起来这种理解是 错误,因为当我们按 ENTER(新行终止符)时,在 unix(\n) 和 windows(\r\n) 的情况下会发送不同的位。按照 新的理解,如果我们在 diff OS(比如 unix 和 windows)上按 ENTER,不同的位被发送到编辑器及其 文本编辑器负责在新行中显示键入的内容,保持底层操作系统的图片。请让我 知道我的理解是否正确,因为这也有助于我理解其他基础知识?

下一个问题是如果上面是正确的,不同操作系统对待某些控制字符不同的原因可能是什么 当他们平等对待所有其他角色时?是不是因为特定操作系统中已经保留了特定位?

【问题讨论】:

    标签: windows operating-system ascii computer-science text-editor


    【解决方案1】:

    实际上,应用程序处理键盘输入的方式略有不同。当您按下返回时,应用程序没有义务在任何地方实际生成 LF 或 CR+LF。例如。它可能决定结束当前段落对象并开始一个新的段落对象(例如在文字处理器中)。如果它是 Windows 文本编辑器,那么它可能只会将 CR+LF 写入文件,而在 Unix 上它只会写入 LF。

    它们的键盘本身与您在屏幕甚至磁盘上看到的东西相去甚远。这会经过扫描代码、键盘布局和其他转换,然后在某处最终成为文本或标记。

    【讨论】:

    • 乔伊。您的意思是说所有操作系统都从键盘为给定的字符命令(“Enter”命令)发送相同的位还是操作系统根本没有出现(直接键盘命令是否发送到编辑器应用程序说editplus没有任何作用之间的操作系统,现在是editplus的责任,需要为给定的键盘命令插入哪个位.如果这是正确的,为什么同一个编辑器会根据操作系统为相同的“Enter”命令插入不同的位,就像在unix上插入\n 虽然它在窗口上插入 \r\n )
    • 如果键盘命令直接需要由编辑器应用程序解释,它应该平等对待相同的键盘命令,而不依赖于操作系统。不是吗?例如,当我按下回车键时,编辑器应该平等地插入任何给定的位,无论是在 unix/windows 上,并一致地解释它,而不依赖于操作系统
    • @MSach 操作系统首先处理/解释按下的键。我在我的 Windows 上安装了多个键盘布局,按相同的键“a”可能会导致我看到:“a”、“á”、“à”、“ã”、“â”、“ф”(+相同的大写变体),取决于布局以及我是否在之前或与“a”一起按下了其他东西(例如“shift”或“right alt/altgr”等)。 AFAIR,Windows 将使按键的代码和相应的“字符”对应用程序可用。该应用程序可以进一步使用这两个值做任何事情,按原样使用它们或进行转换。
    • @MSach 控制代码不应与字母数字字符有任何不同,它们仍然作为键代码从键盘传递到操作系统,然后操作系统将这些键代码转换为必要/适当的代码。然后应用程序可以对从操作系统接收和预处理的键盘输入进行另一轮处理。行尾被编码为简单的 CR 或简单的 LF 或两者的组合只是它们出现的任何系统中的商定约定。一些编辑器支持多种约定,甚至可以让您选择一种。
    • 谢谢阿列克谢。我认为您应该发表评论作为答案。
    猜你喜欢
    • 1970-01-01
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 2011-07-18
    • 2015-08-27
    相关资源
    最近更新 更多