1. 程式人生 > >不同平臺間的換行符轉換

不同平臺間的換行符轉換

1. Windows -> UNIX

windows平臺上帶有CR+LF換行符的文字檔案, 在UNIX下完全顯示正常.

以下是一個Windows平臺的文字檔案win-main.cpp:


win-main.cpp在ubuntu linux系統上, 使用vi開啟:


但是如果一個檔案中夾雜著兩種換行符:LF和CR+LF, 則問題就比較棘手.

夾雜著兩種換行符的檔案為localtime.cpp:

Windows的notepad無法正確對LF進行換行:


而UNIX下也顯示異常:

方法一: notepad++

Edit -> EOL Conversion選單下有三種選項:

Windows Format

Unix/OSX Format

Old Mac Format

方法二: vi/vim

1) 可以使用如下命令, 將\r字元(即上述顯示的^M符號)刪除:

:%s/^V^M//g

其中, ^V指ctrl+v, ^M指ctrl+m

最終的效果為:

:%s/^M//g

或者使用如下命令:

:%s/\r//g

其中\r代表Carriage Return字元

2) 設定檔案格式為unix格式

:set fileformat=unix

References:

http://vasir.net/blog/ubuntu/removing-m-characters-on-ubuntu-in-vim/

http://stackoverflow.com/questions/5843495/what-does-m-character-mean-in-vim

後記(2012/10/24):在Unix平臺有個內建的命令dos2unix(也有與之對應的unix2dos),可以批量將Windows或Mac平臺的文字檔案格式轉換為Unix格式。如,將src目錄下的所有檔案換行轉換為Unix換行,可以使用命令:dos2unix src/*