我用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的時候為追加寫入。
不用改,沒錯,只是編輯器錯誤的辨識了文件的編碼。 。 。