zoukankan      html  css  js  c++  java
  • Linux下的换行符\n\r以及txt和word文档的使用

    Linux doc   by: zollty

    WINDOWS下记事本编写的文档和LINUX下VIM或者GEDIT等编写的文档的不同!

    例如WINDOWS下编写的SH脚本,放到LINUX下执行可能会出错。

    解决方法:

        原因是:Windows下换行符号是“\r\n”,而linux下是“\n”没有”\r”,当shell文件是在Windows下编写的时候,所有的换行符都是“\r\n”,shell下是没办法执行这个文件的,会提示以上错误。请在ultraedit下将该文件执行“File->conversions->Dos to Unix”,执行这个转化后的sh文件能够直接在linux下执行。这步操作能够就是取消”\r”符号。

     

    在 client 端選 ascii 即可。

    若已經用 binary 完成 transfer ,那就試試:

    cat ms.txt | col -b > linux.txt

     

    Linux下新建的文档在Windows下用记事本打开会挤在一起(没有了换行符),原因是记事本不支持\n换行(它只支持\r\n形式的换行),

    解决方法:

    保存成doc格式用Word打开就可以了,这样在Linux下用Vim或者gedit新建doc文档(属于纯文本doc文档)(或者新建成.c文档,在Windows中可以用VC6.0来浏览!)。要打开也可以直接输入命令: (注意,如果文件名是中文,那有可能找不到,须要ls一下,然后复制文件名,然后再gedit 粘贴文件名)

    gedit xx.doc

    或者vim xx.doc(不推荐,vim可能不支持繁体字)

    或者直接找到文件,点击,用Open Office来打开,选择字符集(系统),字符(SYSong18030),语言(中文简体),换段落:

    1. CR&LF,即\r\n,这是Windows下记事本的格式,Linux是完全支持的;(推荐)

    2. CR,即\r,记事本不支持,没有换行效果,也没有\r效果;Word下有换行效果,也有\r,其\r效果是:在每一行的末尾,默认的光标定位是下一行的行首,也就是说在行尾输入的内容实际上是下一行的行首,\r才是真正的换行。而\n是回车,原意是打字机的纸张往下移动一位,后来在linux/unix系统下,\n成为了实际上的换行符。

    3. LF,即\n,linux/unix系统下的换行符。

     

    如果是Windows下编写的doc文档,在Linux下查看(用Open Office)一般都会乱码,

    解决方法:

    先用Open Office打开,然后再全选,把字体设置为SYSong18030,OK中文简体和繁体都显示正常了。

     

    \r是回车符,\n是换行符,各个系统的换行标志:

    win                   用   \r\n

    linux/unix            用   \n

    Mac   OS              用   \r

    CR用符号'\r'表示, 十进制ASCII代码是13, 十六进制代码为OxOD

    LF使用'\n'符号表示, ASCII代码是10, 十六制为0x0A

    所以Windows下用的是OAOD,即CR&LF,

    linux/unix用的是OA,即LF

    MacOS用的是OD,即CR

     

    来历:计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。

    于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。

    后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。Unix 系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<回车><换行>”,即“ \r\n”;Mac系统里,每行结尾是“<回车>”。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。

     

    (在不同平台间使用FTP软件传送文件时, 在ascii文本模式传输模式下, 一些FTP客户端程序会自动对换行格式进行转换. 经过这种传输的文件字节数可能会发生变化. 如果你不想ftp修改原文件, 可以使用bin模式(二进制模式)传输文本)

     

    \n和\r在C语言中的用法:

    #include <stdio.h>

    int main()

    {

        printf("938517\r10086\n");

        return 0;

    }

    无论是Linux系统还是Windows平台,输入均是

    10086

    因为\r已经换行了,所以938517就不再显示了。而\n并不是真正意义上的换行,它实际上是把纸张(或屏幕)向下移动一位(以便显示下一行的内容)。

  • 相关阅读:
    内存泄漏 Memory Leaks 内存优化 MD
    Handler Thread 内部类引起内存泄露分析
    为什么不取消注册BroadcastReceiver会导致内存泄漏
    WebChromeClient 简介 API 案例
    WebViewClient 简介 API 案例
    java.net.URI 简介 文档 API
    android.net.Uri 简介 API
    RV 多样式 MultiType 聊天界面 消息类型 MD
    JS函数声明与定义,作用域,函数声明与表达式的区别
    CSS中table tr:nth-child(even)改变tr背景颜色: IE7,8无效
  • 原文地址:https://www.cnblogs.com/zollty/p/2879288.html
Copyright © 2011-2022 走看看