您好,登錄后才能下訂單哦!
php的文件名能不能加入中文字?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
不建議使用中文文件名!
因為中文會被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標記一定要放在<title></title>之前才有效的
后來又想到了一個更好的解決方法,網頁還是用utf-8編碼和保存,只是fopen()里的文件名參 數單獨給它編下碼就行,php有iconv() 這個改換編碼的程序,把utf-8轉成 gb2312就可以避免中文文件名為亂碼了
看完上述內容,你們掌握php的文件名能不能加入中文字的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。