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

So lösen Sie das Problem verstümmelter Zeichen beim Importieren von CSV in PHP

PHPz
PHPzOriginal
2023-03-29 10:12:441125Durchsuche

Während des CSV-Importvorgangs in PHP werden Sie manchmal auf das Problem verstümmelter Zeichen in der importierten CSV-Datei stoßen, was zu Fehlern in den importierten Daten führt. Wie lässt sich also das Problem verstümmelter Zeichen beim CSV-Import lösen? Hier sind einige Lösungen.

1. Legen Sie das Kodierungsformat der CSV-Datei fest.

Zunächst sollte das Kodierungsformat der importierten CSV-Datei mit dem Kodierungsformat der PHP-Datei übereinstimmen. Sie können das entsprechende Kodierungsformat zum Speichern auswählen, wenn Sie in Excel „Speichern unter“ auswählen. Oder Sie können die CSV-Datei mit einem Texteditor wie Notepad++ öffnen, das Codierungsformat in UTF-8 oder GBK konvertieren und die Datei speichern.

Um beispielsweise eine GBK-codierte CSV-Datei in eine UTF-8-codierte PHP-Datei zu importieren, können Sie den folgenden Inhalt in den PHP-Code einfügen:

if ($_FILES['file']['name']) {
    $filename = $_FILES['file']['name']; //获取文件名
    if ($filename) {
        $type = $_FILES['file']['type'];
        $tmp_name = $_FILES['file']['tmp_name'];
        $size = $_FILES['file']['size'];
        $fp = fopen($tmp_name, "r"); //将文件读取成字符串
        $content = fread($fp, $size);
        $content = iconv("GBK", "UTF-8", $content); //将GBK编码转换为UTF-8编码
        fclose($fp);
    }
}

2 Verwenden Sie die Funktion fgetcsv.

Verwenden Sie die Funktion fgetcsv zum Konvertieren Lesen Sie den Inhalt der importierten CSV-Datei aus und verarbeiten Sie ihn entsprechend. Die Funktion fgetcsv liest den Inhalt einer Zeile einer CSV-Datei und speichert ihn in einem Array.

Zum Beispiel:

if ($_FILES['file']['name']) {
    $filename = $_FILES['file']['name']; //获取文件名
    if ($filename) {
        $type = $_FILES['file']['type'];
        $tmp_name = $_FILES['file']['tmp_name'];
        $size = $_FILES['file']['size'];

        $fp = fopen($tmp_name, "r"); //将文件读取成字符串

        //使用fgetcsv读取csv文件
        while($line = fgetcsv($fp)) {
            if($line!=null){//如果读到的行不为空,进行以下操作
                $user[$j][0] = iconv("GBK", "UTF-8",$line[0]);//将从csv文件中读道的转换成utf-8
                $user[$j][1] = iconv("GBK", "UTF-8",$line[1]);
                $j++;
            }
        }

        fclose($fp);
    }
}

3. Verwenden Sie die Funktion mb_convert_encoding

Verwenden Sie die Funktion mb_convert_encoding, um das Codierungsformat der CSV-Datei in UTF-8 zu konvertieren.

Zum Beispiel:

if ($_FILES['file']['name']) {
    $filename = $_FILES['file']['name']; //获取文件名
    if ($filename) {
        $type = $_FILES['file']['type'];
        $tmp_name = $_FILES['file']['tmp_name'];
        $size = $_FILES['file']['size'];
        $fp = fopen($tmp_name, "r"); //将文件读取成字符串

        while($line = fgets($fp)){
            $buffer[] = mb_convert_encoding($line, 'UTF-8', 'GBK');//将csv文件内容的编码格式转化为UTF-8
        }

        fclose($fp);
    }
}

Zusammenfassung:

Die oben genannten Methoden sind verschiedene Methoden, um das Problem der in PHP CSV importierten verstümmelten Zeichen zu lösen. Sie können die für Sie geeignete Methode auswählen. Natürlich müssen Sie beim Importvorgang von CSV-Dateien auch auf andere Aspekte achten, wie z. B. Zeilentrennzeichen, Spaltentrennzeichen usw., um sicherzustellen, dass die importierten Daten vollständig und korrekt sind.

Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem verstümmelter Zeichen beim Importieren von CSV 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