您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關如何解決php上傳中文文件文件名亂碼的問題,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
php上傳中文文件文件名亂碼的解決方法:在html文件的head標簽中間加入相關語句,使編碼保持統一,代碼為【<meta http-equiv="Content-Type"content="text/html;charset=utf-8】。
php上傳中文文件文件名亂碼的解決方法:
方法一:猜測一下,也許我的系統在創建中文文件的時候會亂碼,于是我將代碼改寫了一下:
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/測試數據.txt");
結果創建成功,沒有亂碼。。。也就是說不是系統問題。
想一下,我的php文件本身是utf8編碼的,那么
move_uploaded_file($_FILES["file"]["tmp_name"],"upload/測試數據.txt");
這個語句肯定使用的是utf8編碼,那么之前上傳的文件名肯定就不是utf8編碼了,那么以下的語句肯定是錯誤的,因為源字符串本身就不是utf8編碼的:
iconv("UTF-8","gbk//TRANSLIT",$_FILES["file"]["name"]);
使用函數檢查源字符串的編碼:
$e=mb_detect_encoding($text, array(‘UTF-8’, ‘GBK’,’gb2312’));2 echo $e;
結果是CP936,也就是源字符串編碼是GBK。
試一下
move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . iconv("gbk","UTF-8",$_FILES["file"]["name"]));
問題解決,不再亂碼
方法二:實際上還有一種解決辦法,就是在html文件的head標簽中間加入
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
從而使編碼保持統一,也就不需要再轉碼了
結論
使用iconv函數可以解決上傳中文文件名亂碼的問題,實際上iconv能解決各種各樣的由于編碼不統一造成的亂碼問題。
使用iconv函數請先檢查源字符串的編碼,除非你已經確定了源字符串的編碼。
盡量保證所有的代碼的編碼一致,萬不得已才使用iconv函數。
吐槽一下,盡量不使用中文文件名作為服務器上保存的文件名,請將文件名轉化成自己的文件名(即使是英文文件名也請轉化一下)。
上述就是小編為大家分享的如何解決php上傳中文文件文件名亂碼的問題了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。