2012-08-29 71 views
0

這是協議:內容相同的文件

1)我生成一個文本文件在線與PHP包含字母數字字符。然後我下載它並記下它的大小(從屬性菜單)。

2)我用Notepad ++打開文本文件並剪切新文本文件中的所有內容,然後保存新文件(具有相同名稱)。

3)令我驚訝的是,即使認爲兩個文件都有完全相同的文本內容,它們的大小也不一樣!

- TEST 1 -

下載的文件:1529柯

新副本文件:1594柯

- TEST 2 -

下載文件:52 Ko

新副本文件:54柯


還等什麼?爲什麼我在這裏發佈這個?因爲相關文件可供我的用戶在我的網站上下載,並且可以用它來替換遊戲保存中的文件。然而,遊戲通過拒絕它來反應新文件,而複製的文件(使用上述協議)可以正常工作。

我在兩個文件中看到的唯一區別是它們的大小(如上所示略有差別) - 但內容和名稱相同。任何想法爲什麼有這種尺寸差異?

+5

你是否已經完成了兩個文件的二進制比較,以確切地看到有什麼不同?僅僅因爲內容與你相同,並不意味着它們實際上是相同的。 –

+2

聽起來像文本編碼問題。 –

+1

嘗試一個標題:'header('Content-Transfer-Encoding:binary');' –

回答

1

這很可能是在unix(1字節)和windows(2字節)之間轉換的換行符。

正如評論中提到的那樣,它也可能是編碼,但NotePad ++在編碼方面相當不錯。這也不太可能解釋這種差異。

您需要將「\ r \ n」轉換爲「\ n」以獲得較小的文件大小。下面是我剛剛發現的一個頁面,其中有幾個選項:http://darklaunch.com/2009/05/06/php-normalize-newlines-line-endings-crlf-cr-lf-unix-windows-mac

另一個需要注意的地方是一個不太明顯的尾隨「換行符」。再次,在進行比較之前將其去掉。

+0

上帝保佑你。當我使用PHP生成我的文件以獲得更大的文件大小時,我必須將「\ n」更改爲「\ r \ n」。 –

0

您的客戶端和服務器是不同的平臺嗎?說linux和windows?在這種情況下,新行字符的存儲方式有所不同。這可能會導致大小差異。 另一個原因可能是使用字符編碼,但它不太可能。

相關問題