Heim  >  Artikel  >  Backend-Entwicklung  >  So lösen Sie das Problem verstümmelter Zeichen beim Hochladen von Chinesisch in PHP

So lösen Sie das Problem verstümmelter Zeichen beim Hochladen von Chinesisch in PHP

藏色散人
藏色散人Original
2020-09-01 09:39:382676Durchsuche

So lösen Sie das Problem verstümmelter chinesischer Zeichen, die von PHP hochgeladen werden: Fügen Sie zuerst [enctype="multipart/form-data"] zur entsprechenden Datei hinzu und verwenden Sie dann [iconv("UTF-8", "gbk",$name ) 】Erzwingen Sie einfach die Transkodierung des Dateinamens.

So lösen Sie das Problem verstümmelter Zeichen beim Hochladen von Chinesisch in PHP

Empfehlung: „PHP-Video-Tutorial

Über PHP-Upload-Dateien und verstümmelte chinesische Namen

Auf der Front-End-HTML-Seite sieht das Formular wie folgt aus

Upload.html

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="hidden" name="MAX_FILE_SIZE" value="2621114">
    <input type="file" required name="upload_file">
    <input type="submit" value="提交">
</form>
</body>
</html>

Hinweis

enctype="multipart /form-data" muss geschrieben werden. Dies teilt dem Browser mit, was Sie hochladen.

02ad864ff822bc5116f29be2aa40bace value

Backend upload.php

<?php
if (is_uploaded_file($_FILES[&#39;upload_file&#39;][&#39;tmp_name&#39;])){
    $upfile = $_FILES[&#39;upload_file&#39;];
    //print_r($upfile);
    $name = $upfile[&#39;name&#39;];//获取文件名
    $type = $upfile[&#39;type&#39;];//文件类型
    $size = $upfile[&#39;size&#39;];//文件大小
    $tmp_name = $upfile[&#39;tmp_name&#39;];//服务器存储的临时名称
    $error = $upfile[&#39;error&#39;];//错误信息
    switch ($type){
        case &#39;image/png&#39;:
            $ok=1;
            break;
        case &#39;image/jpg&#39;:
            $ok=1;
            break;
        case &#39;image/jif&#39;:
            $ok=1;
            break;
        case &#39;image/jpeg&#39;:
            $ok=1;
            break;
    }
    if ($ok && $error == 0){
        move_uploaded_file($tmp_name,&#39;./upload/&#39;.iconv("UTF-8", "gbk",$name));
        echo &#39;文件上传成功&#39;;
    }else{
        echo &#39;文件上传失败&#39;;
    }
}

Beim Hochladen erhält PHP ein Array mit Informationen über die Datei, die im superglobalen Array $_FILES zu finden sind.

Zum Beispiel: Wenn der Name des Dateieingabefelds im Formular upload_file lautet, sind alle Informationen über die Datei im Array $_FILES['upload_file'] enthalten.

is_uploaded_file – Bestimmen Sie, ob die Datei über HTTP POST hochgeladen wurde

move_uploaded_file – Verschieben Sie die hochgeladene Datei an einen neuen Speicherort

bool move_uploaded_file ( string $filename , string $destination )

Wenn Sie auf einen chinesischen Dateinamen stoßen, korrigieren Sie die Datei name wird gezwungen, iconv("UTF-8", "gbk",$name) zu transkodieren, um UTF8 in gbk zu konvertieren, sodass keine verstümmelten Zeichen entstehen

Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem verstümmelter Zeichen beim Hochladen von Chinesisch in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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