不建議使用中文檔名!
因為中文會被URL編碼發送,到伺服器端的時候雖然會解碼,但是如果和你的編碼不一致,就解不出來了。
簡單的說,URL中的中文,在常見的瀏覽器中,預設會以UTF-8編碼進行編碼後發送到伺服器端!而在中文 windows環境的伺服器中,解碼URL的時候,卻用的是gb2312編碼進行解碼的,這樣就導致了沒法得到你在地址欄裡輸入的中文原文!
所以就會提示找不到檔案名稱了。
如果一定要用中文,解決辦法,僅限你本地瀏覽的解決辦法
在瀏覽器中,打開“internet選項“選單,選擇”高級“,然後找到“發送utf-8 URL“,把前面的鉤去掉。然後確認。
再重啟瀏覽器。這樣地址列裡的中文就會預設以gb2312編碼進行發送,這樣伺服器端就能正確找到該中文文件名的文件了
之前網頁的chartset用的是utf-8,文件也用utf-8,然後用fopen()建立一個中文檔案名稱的檔案時問題就出來了,檔案名稱都是亂碼!
查看了很多文件試了不少方法都解決不了,本來想著用別的方法繞過這個問題,忽然腦子裡閃過Windows默認的文字編碼是ansi,然後再baidu了一下,證實了這一點,所以我的網頁也應該是ansi編碼才能讓創建的檔名不會是亂碼。
接著就著手驗證,把網頁都用ansi保存,去掉chartset語句,果然ok了,但是網頁的內容就成亂碼了,後來想起,這個網頁還include 了別的網頁,把include的網頁也改成ansi保存,哈哈萬事ok
編程這個工作真的很靠積累,如果我以前沒看過Windows默認編碼是ansi,那這個問題就不知何年何月才能解決了
ps:< meta content ="text/html; charset=utf-8" http -equiv ="Content-type" > 這個meta標記一定要放在
後來又想到了一個更好的解決方法,網頁還是用utf-8編碼和保存,只是fopen()裡的文件名參數單獨給它編下碼就行,php有iconv() 這個改換編碼的程序,把utf-8轉成gb2312就可以避免中文檔案名為亂碼了
以上是php的檔名加不了中文嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!