2011-12-28 52 views
1

我的Mac上有一個文件,它已經通過unix2dos運行以提供Windows樣式的回車。例如,以下是該文件的頂部部分:在我的Mac上壓縮文本文件破壞Windows上的托架控件

$ od -c ../README.txt | head 
... 
0000020             R E A D 
0000040 M E  f i l e  \r \n \r \n F o r 
0000060 c o m p l e t e  i n s t r u c 

然後我使用Lion中的內置zip程序在Mac上壓縮文件。它是zip版本3.0。

但是,當我在Windows上打開此zip文件時,\ r字符已被刪除。

$ od -c README.txt | head 
... 
0000020             R E A D 
0000040 M E  f i l e  \n \n F o r  c o 

因此,在記事本中它似乎被粉碎。

如何防止發生這種情況?值得關注的是,由於記事本是Windows上的.txt文件的默認編輯器,人們將看到文件的搗毀版本。

+1

使用另一個編輯器而不是記事本? :p不,認真,你使用什麼zip程序? – fge 2011-12-28 20:18:46

+0

更新問題 - 使用Mac上的內置zip。 – 2011-12-28 20:43:16

回答

0

哎呀!根本原因是我的源代碼管理系統(Perforce)在Windows和Mac上以不同方式表示文件。我上面展示的第一個od是在Windows上完成的。我認爲Mac會是一樣的,但事實並非如此。它和第二個一樣。

要只是建立在Mac上我的zip文件之前解決這個問題,我用awk來使文件的Windows友好:

cat <sourcefile> | awk 'sub("$", "\r")' > README.txt 

(你可以使用unix2dos,但我並沒有對我的安裝建立機器。)

+2

您是否將該壓縮文件存儲在Perforce中?或者將源文件存儲在Perforce中?如果要將源文件存儲在Perforce中,可以採用多種方法來配置和控制Perforce的行結束行爲:http://kb.perforce.com/article/63 – 2011-12-31 17:13:08

+0

存儲輸入文件(源文件在我的命令示例中以上)在Perforce。 – 2012-01-03 19:04:55

0

你在你的zip程序中肯定有一個錯誤。我也用壓縮版本3(Gentoo Linux時,x86_64的),它不會出現此問題:

[email protected] ~ $ file input.txt 
input.txt: HTML document, ASCII text, with CRLF line terminators 
[email protected] ~ $ stat --format %s input.txt 
476 
[email protected] ~ $ zip -q input.zip input.txt 
[email protected] ~ $ unzip input.zip 
Archive: input.zip 
replace input.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: y 
    inflating: input.txt    
[email protected] ~ $ stat --format %s input.txt 
476 

也許更新您的zip程序,或下載原始資料,並與他們嘗試一下呢?

試一試,看看也不管你有ZIP或ZIPOPT環境變量(我不知道)