首頁 >後端開發 >php教程 >關於PHP fopen函數在windows系統上建立中文命名的文件時亂碼的問題

關於PHP fopen函數在windows系統上建立中文命名的文件時亂碼的問題

WBOY
WBOY原創
2016-07-30 13:31:231239瀏覽

眾所周知,PHP的fopen函數可以創建一個新文檔,但如果你創建的這個文檔,以中文來命名,並且你使用的是windows系統的話,會發現文檔名的中文部分會亂碼。下面來做一下實驗:

PHP腳本(UTF-8編碼)

<code><span><?php </span><span>$fileName</span> = <span>__DIR__</span> . <span>'/中文文档.txt'</span>;
<span>//$fileName = iconv('UTF-8', 'GBK', $fileName);</span><span>$fp</span> = fopen(<span>$fileName</span>, <span>'w'</span>);
fwrite(<span>$fp</span>, <span>'这是中文内容'</span>);
fclose(<span>$fp</span>);
<span>?></span></span></code>

執行上面腳本,瀏覽新建立的文件:
關於PHP fopen函數在windows系統上建立中文命名的文件時亂碼的問題
可以看到,文檔名稱亂碼了,但文件裡的內容沒有亂碼。

解決方法

將上面PHP腳本的第二句代碼的註釋去掉,將$fileName由UTF-8編碼轉換成GBK編碼,然後再執行一次腳本,發現文檔名稱不會亂碼了:
不關於PHP fopen函數在windows系統上建立中文命名的文件時亂碼的問題

最後

目前這種情況只發現在windows系統上存在,在Mac OS/Linux上正常,所以在Unix/Linux系統上,無需對文檔名的編碼進行轉換,如果你硬是要將文檔名轉換成GBK編碼,這樣反而會亂碼了,例如這樣:
關於PHP fopen函數在windows系統上建立中文命名的文件時亂碼的問題

版權聲明:本文為博主原創文章,未經博主允許不得轉載。

以上就介紹了關於PHP fopen函數在windows系統上創建中文命名的文檔時亂碼的問題,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

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