首頁 > 後端開發 > PHP問題 > php上傳中文檔案名稱亂碼怎麼辦?

php上傳中文檔案名稱亂碼怎麼辦?

coldplay.xixi
發布: 2023-03-02 18:00:01
原創
3495 人瀏覽過

php上傳中文檔案檔案名稱亂碼的解決方法:在html檔案的head標籤中間加入相關語句,讓編碼保持統一,程式碼為【

#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程式設計從入門到精通

以上是php上傳中文檔案名稱亂碼怎麼辦?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板