首頁  >  文章  >  後端開發  >  php 我用fwrite() 寫入了一個檔案,怎麼文件內容全變了?

php 我用fwrite() 寫入了一個檔案,怎麼文件內容全變了?

WBOY
WBOY原創
2016-08-29 08:50:541423瀏覽

我用fwrite() 寫入了一個文件,怎麼文件內容全變了?
本來文件2.txt的內容是

<code>★★★★★★★★★★★★</code>

然後我執行了以下腳本:

<code>$res = fopen( "R:/2.txt"  ,"r+" );
fwrite( $res , "r" );
fclose( $res );</code>

結果2.txt 成了:

<code>r铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩?</code>

請問這是怎麼回事?怎麼改正?

回覆內容:

我用fwrite() 寫入了一個文件,怎麼文件內容全變了?
本來文件2.txt的內容是

<code>★★★★★★★★★★★★</code>

然後我執行了以下腳本:

<code>$res = fopen( "R:/2.txt"  ,"r+" );
fwrite( $res , "r" );
fclose( $res );</code>

結果2.txt 成了:

<code>r铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩铩?</code>

請問這是怎麼回事?怎麼改正?

因為這個五角星號一個字符佔用不止一個字節,你寫了r 覆蓋了第一個字節,導致之後的字符都被破壞了,因為正好第一個字符餘下字節和第二字符的第一個位元組正好可以拼成一個有效的編碼。
你如果想要截斷檔案的話,應該寫完後ftruncate。

是想追加內容?

http://php.net/manual/en/func...
fopen開啟方式選擇a的時候為追加寫入。

不用改,沒錯,只是編輯器錯誤的辨識了文件的編碼。 。 。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn