2007年11月4日 星期日

Unix 及 Windows 下的換行字元

Unix 及 Windows 下的換行字元

November 4th, 2007 by Chuan-Hsien Lin
Last Modified on November 4th, 2007

UNIX 和 Windows 的換行字元是不一樣的,UNIX 的換行字元只有 10 (New Line),而 Windows 的換行字元是由 13 (Carriage Return) 及 10 (New Line) 組成。

以下利用 Windows XP,以及 Cygwin 環境來實驗。

首先在 Windows 下利用筆記本新增一個 test.txt 檔案,內容如下,只有短短兩行,

test1
test2

用 od 指令看該檔案 ascii 碼,結果如下,

$ od -t c test.txt
0000000   t   e   s   t   1  \r  \n   t   e   s   t   2
0000014

用 od 指令看該檔案 hex,結果如下,

$ od -t x1 test.txt
0000000 74 65 73 74 31 0d 0a 74 65 73 74 32
0000014

可以發現,Windows 下用筆記本新增出來的檔案,換行是 \r \n,亦即 0x0D 0x0A。

再作個實驗,直接在 Cygwin 底下用 vi 新增一 test2.txt 檔案,文字內容同 test.txt,接著用 od 指令去看檔案內容,

$ od -t c test2.txt
0000000   t   e   s   t   1  \n   t   e   s   t   2  \n
0000014

$ od -t x1 test2.txt
0000000 74 65 73 74 31 0a 74 65 73 74 32 0a
0000014

此時會發現,在 Cygwin 下用 vi 新增出來的檔案, 其換行字元只會使用一個 \n,即 0x0A。

沒有留言: