首頁  >  文章  >  後端開發  >  php的檔名加不了中文嗎

php的檔名加不了中文嗎

(*-*)浩
(*-*)浩原創
2019-10-16 15:06:212248瀏覽

不建議使用中文檔名!

因為中文會被URL編碼發送,到伺服器端的時候雖然會解碼,但是如果和你的編碼不一致,就解不出來了。

php的檔名加不了中文嗎

簡單的說,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中文網其他相關文章!

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