php中的fread和fgetc擷取檔案內容的單位是位元組還是字元,為什麼fgetc讀取不到字元?

來源:互聯網
上載者:User
大家好,有個關於php處理檔案的問題,請教大家。

我寫了一段代碼來體驗fread()和fgetc(),檔案test.txt中的內容為this is a test file. txt檔案編碼為utf-8格式

上面的代碼,可以擷取第一個字元t,如果fread第二個參數小於4就什麼也讀取不到了!

所以下面這個fgetc()也是空白內容。

擷取不到內容

我的電腦是windows系統

應該如何理解fread()的第二個參數及fgetc中的一個字元呢?

是因為檔案編碼格式的原因嗎?

php處理檔案應該如何注意處理檔案編碼格式?

謝謝!

回複內容:

大家好,有個關於php處理檔案的問題,請教大家。

我寫了一段代碼來體驗fread()和fgetc(),檔案test.txt中的內容為this is a test file. txt檔案編碼為utf-8格式

上面的代碼,可以擷取第一個字元t,如果fread第二個參數小於4就什麼也讀取不到了!

所以下面這個fgetc()也是空白內容。

擷取不到內容

我的電腦是windows系統

應該如何理解fread()的第二個參數及fgetc中的一個字元呢?

是因為檔案編碼格式的原因嗎?

php處理檔案應該如何注意處理檔案編碼格式?

謝謝!

兩種方式我都嘗試過了,我測試都是沒有問題的。我用的mac。所以初略判斷應該是系統檔案編碼的關係。
另外,在fread的官方文檔中有警告:
Warning:在區分二進位檔案和文字檔的系統上(如 Windows)開啟檔案時,fopen() 函數的 mode 參數要加上 'b'。

同時,fgetc的官方文檔中有這麼一句提示:
Note: 此函數可安全用於二進位對象。

解決辦法,文檔中有提示。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.