`
have_life
  • 浏览: 150195 次
社区版块
存档分类
最新评论

Linux和windows中的换行符差异

阅读更多
Win: /r/n
Unix: /n

----------------------------
详情见下:

LINUX的换行符在Windows记事本打开不换行或出现黑点是由于Linux和windows中的换行符差异问题造成的。

首先来看回车符号和换行符号产生背景
关于“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别。
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在
这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。
这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。
后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。
Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“ <回车><换行>”,即“\r\n”;Mac系统里,每行结尾是“<回车>”。一个直接后果是,Unix/Mac系统下的文件在
Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号

windows创建的文件是 \n\r结束的,而linux,mac这种unix类系统是\n结束的。
所以unix的文本到windows会出现换行丢失(ultraedit这种软件可以正确识别);而反过来就会出现^M的符号;

Windows等操作系统用的文本换行符和UNIX/Linux操作系统用的不同,Windows系统下输入的换行符在UNIX/Linux下不会显示为“换行”,而是显示为 ^M 这个符号(这是Linux等系统下规定的特殊标记,
占一个字符大小,不是^和M的组合,打印不出来的)。Linux下很多文本编辑器(命令行)会在显示这个标记之后,补上一个自己的换行符,以避免内容混乱(只是用于显示,补充的换行符不会写入文件,有专门的命令将Windows换行符替换为Linux换行符)。 UNIX/Linux系统下的换行符在Windows系统的文本编辑器中会被忽略,整个文本会乱成一团。
windows换行是\r\n,十六进制数值是:0D0A。
LINUX换行是\n,十六进制数值是:0A
所以在linux保存的文件在windows上用记事本看的话会出现黑点,我们可以在LINUX下用命令把linux的文件格式转换成win格式的。
unix2dos 是把linux文件格式转换成windows文件格式
dos2unix 是把windows格式转换成linux文件格式。
linux下删除windows换行符^M
OJ判题时发现一个问题:用%c读入的代码都会报wa。后来发现跟scanf有关。在linux下使用%c会读到\n和\r两个字符。所以需要将^M(也就是\r)字符删掉
删除方法不少。找了一个比较简单的。
要将a.txt里的^M去掉并写入b.txt,则使用如下指令cat a.txt | tr -d "^M" > b.txt
注意:语句中的^M是通过ctrl+V, ctrl+M输入的。特指/r字符

unix 下换行符只有: \r
Dos 下换行符有:\r\n
具体的, \r的ascii 码是:14
\n的ascii 码是:10

link:
http://blog.sina.com.cn/s/blog_4462f8560100tqau.html
分享到:
评论

相关推荐

    Linux和windows中的换行符差异问题.docx

    标题“Linux和Windows中的换行符差异问题”指的是在Linux和Windows操作系统中,文本文件的换行方式存在差异,导致跨平台操作时可能会遇到显示不正常的问题。在Linux系统中,每行的结束通常只使用一个换行符(LF,...

    java 换行符.docx

    在 Java 中,`BufferedReader` 和 `PrintWriter` 类在读写文件时会自动处理不同操作系统的换行符差异。例如,当你使用 `BufferedReader.readLine()` 读取文件时,它会正确地识别并返回不包含换行符的行内容;而使用 ...

    关于 java中的换行符

    理解这些换行符的差异对于编写跨平台的Java代码尤其重要,尤其是在处理文本文件和用户界面的显示时。通过合理选择上述的换行方法,你可以确保你的程序在任何操作系统上都能正确地显示多行文本。

    Linux到WINDOWS文本文件转换程序

    在Linux系统中,每行文本的结束是以一个换行符(LF)表示的,而在Windows系统中,每行的结束则由两个字符组成:回车符(CR)和换行符(LF)。这种差异在跨平台操作时可能会导致文本文件显示不正常,例如,Windows下...

    Windows代码移植到Linux

    综上所述,将Windows代码移植到Linux的过程中,除了关注编码格式、文件名大小写敏感性和换行符标准化这些基本要点外,还需要综合考虑依赖库兼容性、路径处理、编译器差异以及性能优化等多个方面,以确保移植后的代码...

    UNIX回车换行与Windows下的区别

    在探讨UNIX与Windows文本文件换行符差异之前,我们首先需要理解换行符的基本概念及其在不同操作系统中的实现方式。换行符,简而言之,是在文本文件中用于表示新行开始的特殊字符。然而,不同的操作系统在处理文本...

    windows下压缩的zip文件,上传到Linux后unzip不认的解决办法

    Windows主要使用DOS/Windows风格的文本文件换行符(CRLF,即回车换行),而Linux则使用UNIX风格的换行符(LF,即只使用换行)。此外,Windows的压缩工具如WinRAR或7-Zip在处理文件时可能会包含特定的Windows元数据,...

    python去除字符串中的换行符

    ### Python去除字符串中的换行符 在Python编程中,经常需要处理文本数据,尤其是在读取文件或接收用户输入时,可能会遇到包含换行符...此外,需要注意不同操作系统之间的换行符差异,以便正确处理来自不同环境的数据。

    把Linux中的文本文件格式转为Windows的

    在Linux或类Unix系统中,每行文本结束时使用的是单一的换行符(\n)。相反,Windows系统使用的是回车换行符组合(\r\n)来标记行的结束。这就导致了当一个在Linux环境下创建的文本文件在Windows中打开时,可能会出现...

    对源码自动加上utf8 bom头,并修改换行符为unix换行

    在Windows系统中,文本文件的换行通常使用CRLF(Carriage Return, Line Feed,即回车加换行)组合,而在Unix和Linux系统中,只使用LF(Line Feed,换行)作为换行符。这两种不同类型的换行符在跨平台交互时可能导致...

    windows和linux、Mac系统换行规则的区别.docx

    在Unix和Linux系统中,每行的结束仅使用一个换行符(LF),也就是ASCII码10。而在Windows系统中,每行结束使用回车换行两个字符(CR LF),即ASCII码13紧接着ASCII码10。Mac系统早期(OS 9以前)采用的是单独的回车...

    浅谈mysql数据库中的换行符与textarea中的换行符

    理解数据库和前端交互中的换行符差异是开发高效Web应用的关键。正确处理这些换行符可以避免显示问题,确保数据在存储和检索时保持一致。在实际开发中,还需要考虑其他因素,如不同的操作系统和浏览器可能对换行符的...

    用Kylix实现Windows应用程序到Linux平台的移植.pdf

    Windows与Linux的主要差异包括文件名处理、换行符、批处理脚本和配置文件格式,以及动态链接库和异常处理机制。例如,Linux文件名区分大小写,Windows不区分;Windows使用CR+LF作为换行符,而Linux使用LF。 2.2 VCL...

    java log4j统一打印在user.dir目录下(windows、linux通用、不用考虑不同操作系统分隔符不一致的情况)

    本教程将详细解释如何配置Log4j,使其在不同操作系统环境下(Windows和Linux)都能统一将日志打印到`user.dir`目录下,避免因路径分隔符差异带来的问题。 首先,了解`user.dir`系统属性。在Java中,`user.dir`代表...

    第3讲 linux移植 二进制与文本区别.doc

    1. 文件编码与换行符差异: - Windows系统通常使用DOS/Windows格式的换行符,即每个换行由一个回车(CR, \r)和一个换行(LF, \n)字符组成,表示为"\r\n"。 - Linux系统则使用单一的LF字符作为换行符,表示为"\n"。 ...

    使用C+解决Linux中文乱码问题.docx

    首先,我们要了解Linux和Windows系统对文本编码和换行符的不同处理方式。在Linux系统中,文本文件通常使用UTF-8编码,而Windows系统则可能使用GBK或其他编码。换行符方面,Windows使用"\r\n",而Linux使用"\n"。这些...

    linux2dos(转换文本工具)

    Linux系统使用的是LF(Line Feed,换行符)作为行结束标识,而Windows和DOS系统则采用CRLF(Carriage Return + Line Feed,回车加换行符)作为行结束标志。这就导致了在不同系统间交换文本文件时可能会出现格式问题...

    windows的文档转linux格式的东西

    在Windows环境下创建的文本文件(如脚本或代码),转移到Linux环境后可能会遇到换行符不一致、编码问题等,导致无法正常运行。为了解决这一问题,我们引入了"dos2unix"工具,它是标题和描述中提到的关键知识点。 ...

    CR LF CRLF转换

    例如,在版本控制系统(如Git)中,开发者经常需要处理因换行符差异引发的冲突。通过正确转换文件,可以确保代码在任何环境下都能正常运行和编辑。 总之,"CR LF CRLF转换"是跨平台工作中的一项基础技能,它涉及了...

    unity,windows平台编码问题

    这些问题主要涉及到不同的操作系统之间(如Windows与Unix/MacOSX)的文本文件格式差异,尤其是换行符的不同导致的一系列错误和警告。 #### 二、问题现象 1. **Unity错误提示**: - 错误信息:“Assets/cs”脚本中...

Global site tag (gtag.js) - Google Analytics