Windows回车\ r \ n是由两个字符还是一个字符组成?

Windows回车是\r\n而在Unix中是\n\r\n被视为两个字符?

这是两个字符:

  • \r是回车;
  • \n是换行符。

组合的两个字符代表Windows上的新行。 而在Linux上, \n代表新行。 它将光标移动到Linux上新行的开头。 在Windows上,光标将停留在控制台的同一列,但在下一行。

\r Linux上的效果与Windows上的效果相同:将光标移动到行的开头。 可以在使用\r而不是\n的同一行上打印不同的信息。

其实\r is 0x0D (^M) and \n is 0x0A (^J) ,但…..在Windows上:

 \n will write 0x0D 0x0A 

在unix上:

 \r will write 0x0D \n will write 0x0A 

取决于设置。 \r\n是两个字节宽(ASCII,UTF-8等),但I / O库(如C的stdio库等)在文本模式下运行时,可能会在\n\r\n透明。

也就是说,在Windows平台上,读取文本模式streamtxt_in的C程序

 while ((c = getc(txt_in)) != EOF) printf("%02x\n", c); 

将不会报告\r的ASCII码。 相反, putc('\n', txt_out)实际上将\r\n写入文本模式streamtxt_out

Windows不区分\r\n和任何其他两个字符。 但是,有一种情况将其视为一个字符:如果使用C运行库并以文本forms打开文件,则文件中的\r\n将被读为\n\n将被写入文件作为\r\n

是的,这是两个字符:回车'\ r'后面是换行'\ n'。

我在Windows上用Notepad ++和Sublime Text 2进行了一些testing(没什么奇怪的),结果certificate\r\n确实是两个不同的字符,但是…

不同的文本编辑器可能会插入,或者当按下回车键时可能不会插入\r

在你的文本编辑器中尝试以下内容:

 1 2 3 4 5 

然后按Ctrl + F ,启用正则expression式并search\r 。 根据您的文本编辑器及其设置,您可能会在每行的末尾“碰撞”或“未碰到”某个字符。 如果上述文本是从另一个编辑器复制粘贴,行为可能也会有所不同…

某些文本编辑器允许在其设置中进行自定义设置,您可以指定在按下Return时是否要插入\r\n或unix样式\n 。 最重要的是,它们可能允许您在保存文件之前通过剥离或插入\r字符来select强制执行一致的样式。