文章目录
  1. 1. 问题背景
  2. 2. 涉及知识
  3. 3. 解决方案
  4. 4. 附加知识点

问题背景

  • 还记得自己之前提交代码(win->linux),提交完后系统就奔溃了,笔者当时就懵逼了。到服务器上一看代码,每行代码末尾无端的了多了 ^M 的字符。

  • 今天往Git上提交时,又遇到了

    1
    warning: LF will be replaced by CRLF in stuManager1/GitTest.txt.

当然,对于warning,您完全可以置之不理。

好了,到这里,我们可以说说上面问题的本质原因了。

涉及知识

对于文本处理,不同平台使用的换行操作符是不一样的。这也就是上述问题产生的原因了。

实际编程中,大家应该写过

1
2
3
\r\n
//或者
\n

我们给这俩字符起个名字:

1
2
\r //CR(Carriage Return,回车)
\n //LF(Line Feed,换行)
  • Dos和Windows采用回车+换行CRLF表示下一行

  • 而UNIX/Linux采用换行符LF表示下一行

  • MAC OS系统采用回车符CR表示下一行

解决方案

  • 命令式
1
2
3
4
5
6
7
8
9
10
/******************vi 中编辑:******************/
:set fileformat=unix
:set fileformat=dos
:set fileformat=mac
//上面3个命令按需设置;
/*******************linux/unix******************/
dos2unix filename
unix2dos filename
//不啰嗦,一目了然
  • 工具式

Notepad++ :

Beyond Compare:

附加知识点

  • 对于ASCII 文本格式,不同平台通过FTP传输时,有可能自动转换。
    可以使用bin模式(二进制模式)传输文本来防止转换。

  • linux下通过命令file yourfile 查看文件 换行符;

文章目录
  1. 1. 问题背景
  2. 2. 涉及知识
  3. 3. 解决方案
  4. 4. 附加知识点