PHP儲存檔案,中文亂碼的解決方法

2021-10-21 05:55:34 字數 691 閱讀 4500

問題說明:

在win下:

在進行php檔案上傳的時候,儲存檔案為中文時,亂碼。

linux下卻正常

查閱資料發現:

由於系統是gb2312作為檔名編碼,所以utf-8的php檔案生成的中文名肯定亂碼。(win)

所以進行編碼轉變

move_uploaded_file($_files["file"]["tmp_name"], "upload/" . iconv("utf-8","gb2312",$_files["file"]["name"]));
1.使用iconv函式可以解決上傳中文檔名亂碼的問題,實際上iconv能解決各種各樣的由於編碼不統一造成的亂碼問題。

2.使用iconv函式請先檢查源字串的編碼,除非你已經確定了源字串的編碼。

3.盡量保證所有的**的編碼一致,萬不得已才使用iconv函式。

一種檢查編碼的方法:

$e=mb_detect_encoding($_files["file"]["name"], array("utf-8","gbk","gb2312"));

echo $e;

//被返回: utf-8,從而確認當前編碼為utf-8,然後進行編碼轉換即可

php 上傳亂碼 PHP上傳檔案中文亂碼解決方法!

上傳表單 檔名 php if files file type video mp4 if files file error 0 echo 錯誤 files file error else echo 上傳檔名 files file name echo 檔案型別 files file type echo ...

PHP解決中文亂碼

在php中,中文亂碼非常頭疼,很麻煩,所以根據在程式設計的經驗,總結以下方法 以utf 8為例 1.php中在頭部header設定編碼方式 hea content type text html charset utf 8 2.php中用iconv轉碼 echo iconv gb2312 utf 8 ...

linux php mysql 中文亂碼解決方案

本公司mysql資料庫預設的編碼是utf8,如果這種編碼與你的php網頁不一致,可能就會造成mysql亂碼.mysql中建立表時會讓你選擇一種編碼,如果這種編碼與你的網頁編碼不一致,也可能造成mysql亂碼.mysql建立表時新增欄位是可以選擇編碼的,如果這種編碼與你的網頁編碼不一致,也可能造成my...