Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk menyelesaikan masalah aksara yang kacau apabila mengimport csv ke dalam php

Bagaimana untuk menyelesaikan masalah aksara yang kacau apabila mengimport csv ke dalam php

PHPz
PHPzasal
2023-03-29 10:12:441153semak imbas

Semasa proses mengimport CSV dalam php, kadangkala anda akan menghadapi masalah aksara bercelaru dalam fail CSV yang diimport, mengakibatkan ralat dalam data yang diimport Jadi bagaimana untuk menyelesaikan masalah aksara bercelaru dalam import CSV? Berikut adalah beberapa penyelesaian.

1. Tetapkan format pengekodan fail CSV

Pertama sekali, format pengekodan fail CSV yang diimport hendaklah konsisten dengan format pengekodan fail PHP apabila memilih "Simpan Sebagai" dalam format Excel untuk disimpan. Atau anda boleh menggunakan editor teks seperti Notepad++ untuk membuka fail CSV, menukar format pengekodan kepada UTF-8 atau GBK dan menyimpan fail tersebut.

Sebagai contoh, untuk mengimport fail CSV yang dikodkan GBK dalam fail PHP yang dikodkan UTF-8, anda boleh menambah kandungan berikut dalam kod PHP:

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 fungsi fgetcsv

Gunakan fungsi fgetcsv untuk membaca kandungan fail CSV yang diimport dan kemudian memprosesnya dengan sewajarnya. Fungsi fgetcsv akan membaca kandungan baris fail CSV dan menyimpannya dalam tatasusunan.

Contohnya:

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 Gunakan fungsi mb_convert_encoding

Gunakan fungsi mb_convert_encoding untuk menukar format pengekodan fail CSV kepada UTF-8.

Contohnya:

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);
    }
}

Ringkasan:

Di atas adalah beberapa kaedah untuk menyelesaikan masalah bercelaru import PHP CSV Kaedah yang berbeza mempunyai kesan tertentu pada masalah bercelaru yang berbeza . Kebolehgunaan, anda boleh memilih kaedah yang sesuai dengan anda. Sudah tentu, anda juga perlu memberi perhatian kepada isu lain semasa proses import fail CSV, seperti pemisah baris, pemisah lajur, dll., untuk memastikan data yang diimport adalah lengkap dan betul.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah aksara yang kacau apabila mengimport csv ke dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn