string - “换行”和“换行”之间的技术区别?
问题描述
昨天我添加了一个答案如何在 UI5 中为文本添加换行符?. 在尝试使用更多标签指定问题时,我意识到 Stack Overflow 上有两个类似的标签可用:换行符和换行符。
和之间的区别LF
CR
非常明显。但是“换行符”和“换行符”这两个术语有什么区别?它们不是彼此的同义词吗?
Stack Overflow 上的换行摘录说:
换行是指 [...]换行符。
...而维基百科的“换行符”的消歧页面说:
换行可以参考 [...] newline。
从那个“换行符”页面:
为了表示单个换行符,Unix 程序使用
line feed
[...] 而 [...] Windows 常用的大多数程序使用carriage return
+line feed
。
软件行业中是否有任何技术标准或指南明确区分这两个术语?或者它们可以互换使用,没有技术差异?
我目前的假设是没有区别:“换行符”描述了软返回(⇧ Shift+ ↵ Enter)或硬返回(↵ Enter)的结果,而“换行符”是“换行符”的技术术语,但具有相同的结果。
解决方案
我将换行符解释为语义。当你看到一个\n
. C语言“换行”的意思是换行。这就像A
ASCII 中的 (0x41) 是拉丁字母 a 的大写。所以一个名字,一个代码,一个意义。
就像“SP”(\u0020
)是一个空格字符。还有许多其他空格字符:C 也将 TAB 识别为空格字符。HTML 将换行识别为空格字符(而不是换行符(但在 中<pre>
)。
CR 和 LF 由 ASCII 定义,并一起使用,因为打字机通常以这种方式工作,并给予更多时间移动(它们是串行连接的,因此具有定时输入)。您可能会发现旧 ASCII 的扫描文档中有关控制字符的含义,但情况发生了很大变化。\0 现在是字符串的结尾,之前它只是一个填充字符(或退出序列)。Apple 使用 CR、Unix LF 作为排版人员使用的换行符。
如果你想要一个名称和别名的列表,Unicode 会提供这样的名称(但通常会出现错误,所以现在 BELL 用于表情符号,因此 BEL 的旧别名不再有效,用于控制代码)。还有一些关于控制代码标准化的资料(主要用于转义序列等)。但这也不是完全的追随者。终端往往有怪癖。