眾所周知,PHP的fopen函數可以創建一個新文檔,但如果你創建的這個文檔,以中文來命名,並且你使用的是windows系統的話,會發現文檔名的中文部分會亂碼。下面來做一下實驗:
<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腳本的第二句代碼的註釋去掉,將$fileName
由UTF-8編碼轉換成GBK編碼,然後再執行一次腳本,發現文檔名稱不會亂碼了:
目前這種情況只發現在windows系統上存在,在Mac OS/Linux上正常,所以在Unix/Linux系統上,無需對文檔名的編碼進行轉換,如果你硬是要將文檔名轉換成GBK編碼,這樣反而會亂碼了,例如這樣:
版權聲明:本文為博主原創文章,未經博主允許不得轉載。
以上就介紹了關於PHP fopen函數在windows系統上創建中文命名的文檔時亂碼的問題,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。