Heim > Backend-Entwicklung > PHP-Problem > So lösen Sie das Problem des von PHP erhaltenen verstümmelten Dateinamens

So lösen Sie das Problem des von PHP erhaltenen verstümmelten Dateinamens

WJ
Freigeben: 2023-03-01 14:22:01
Original
3919 Leute haben es durchsucht

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);
Nach dem Login kopieren

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; //这样就是我们的新文件名了,全数字的不会有乱码了哦。
Nach dem Login kopieren

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
}
Nach dem Login kopieren


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))){//处理…}
Nach dem Login kopieren


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);    
   }    
}    
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage