Heim >Backend-Entwicklung >PHP-Problem >So lösen Sie das Problem des von PHP erhaltenen verstümmelten Dateinamens
Wie kann das Problem der von PHP erhaltenen verstümmelten Dateinamen gelöst werden?
Ich denke, dass viele Freunde bei der Entwicklung der Upload-Funktion von UTF8-codiertem PHP auf ein solches Problem stoßen werden, d. h. beim Hochladen einer Datei mit einem chinesischen Dateinamen wird der Dateiname verstümmelt Tatsächlich können wir die iconv-Funktion verwenden, um den Dateinamen neu zu kodieren, um das Problem zu lösen.
Die PHP-Datei verwendet UTF-8-Kodierung. Wenn Sie richtig geraten haben, sollte APACHE GBK für die Verarbeitung verwenden. Nachdem ich über dieses Problem nachgedacht hatte, suchte ich nach relevanten Tutorials und fand einfach die Funktion iconv.
Funktionsprototyp: string iconv ( string in_charset, string out_charset, string str )
Verwendungsbeispiel: $content = iconv(“GBK”, “UTF-8”, $content);
Die Funktion dieses Beispiels besteht darin, $content von GBK in die UTF-8-Kodierung zu konvertieren.
Der Schlüsselcode für das verstümmelte Problem:
Kopieren Sie den Code:
$name=iconv("UTF-8","gb2312", $name);
Zusätzlich zur Lösung des Problems der chinesischen verstümmelten Zeichen in hochgeladenen Dateien können wir Benennen Sie auch die hochgeladenen Dateien um.
Beispiel
Kopieren Sie den Code wie folgt:
$sFileName = “sda.php”; $sOriginalFileName = $sFileName; $sExtension = s str($sFileName, (strrpos($sFileName, ‘.’) + 1));//找到扩展名 $sExtension = strtolower($sExtension); $sFileName = date(“YmdHis”).rand(100, 200).”.”.$sExtension; //这样就是我们的新文件名了,全数字的不会有乱码了哦。
Im Folgenden sind einige Ergänzungen aufgeführt:
Lösung für verstümmelte chinesische Dateinamen beim PHP-Upload
Kopieren Sie den Code wie folgt:
$filepath=”upload/”; $name=$filepath.$_FILES[“upfile”][“name”]; while(file_exists($name)){ $temp=explode(“.”,$name);//分割字符串 $name=$temp[0].”0″.”.”.$temp[1];//主文件名后面加0 }
Kopieren Sie den Code wie folgt:
//iconv()-Funktion ist der Schlüssel
if(move_uploaded_file($_FILES[“upfile”][“tmp_name”],iconv(“UTF-8″,”gb2312”,$name))){//处理…}
Meine PHP-Kodierung ist UTF- 8, der Grund könnte sein, dass das Betriebssystem GBK ist.
Hinweis: Mein Server ist Windows XP, Apache, und es wird geschätzt, dass der XP-Zeichensatz GBK ist. Da mein PHP-Code im UTF-8-Format gespeichert ist, werden beim Benennen des Dateinamens verstümmelte Zeichen angezeigt, sodass Sie die Funktion iconv() verwenden können, um den ursprünglichen Dateinamen im UTF-8-Format in das GBK-Format zu konvertieren.
Lösung für den verstümmelten chinesischen Dateinamen, der durch PHP-UTF8-Codierung hochgeladen wurde
Ich denke, viele Freunde werden auf ein solches Problem stoßen, wenn sie die Upload-Funktion von UTF8-codiertem PHP entwickeln, dh wenn sie eine Datei mit einem chinesischen Dateinamen hochladen , Der Dateiname wird verstümmelt. Mit der Funktion iconv können wir den Dateinamen neu kodieren und das Problem lösen.
Code kopieren Der Code lautet wie folgt:
header("Content-Type:text/html;charset=utf-8"); $submit = $_POST[‘submit‘]; if(isset($submit) && trim($submit) != ‘‘){ $file = $_FILES[‘file‘]; if(isset($file[‘tmp_name‘])){ $name = iconv(‘utf-8‘,‘gb2312‘,$file[‘name‘]); //利用Iconv函数对文件名进行重新编码 if(move_uploaded_file($file[‘tmp_name‘],$name)){ echo ‘文件上传成功!‘; echo ‘图片信息:‘; print_r($file); } } }
Verwandte Referenzen: PHP-Tutorial
Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem des von PHP erhaltenen verstümmelten Dateinamens. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!