CSVをphpにインポートする際に文字化けが発生する問題を解決する方法

PHPz
リリース: 2023-03-29 10:32:40
オリジナル
1119 人が閲覧しました

phpでCSVインポートを行う際、インポートしたCSVファイルが文字化けしてインポートデータにエラーが発生する場合がありますが、CSVインポートでの文字化けを解決するにはどうすればよいでしょうか?ここではいくつかの解決策を紹介します。

1. CSV ファイルのエンコード形式を設定する

まず、インポートされた CSV ファイルのエンコード形式が PHP ファイルのエンコード形式と一致している必要があります。適切なエンコードを選択できます。 Excelで「名前を付けて保存」を選択した場合の形式で保存します。または、メモ帳などのテキスト エディタを使用して CSV ファイルを開き、エンコード形式を UTF-8 または GBK に変換して、ファイルを保存することもできます。

たとえば、GBK でエンコードされた CSV ファイルを UTF-8 でエンコードされた PHP ファイルにインポートするには、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. fgetcsv 関数を使用します。

fgetcsv 関数を使用して、インポートされた CSV ファイルの内容を読み取り、それに応じて処理します。 fgetcsv 関数は、CSV ファイルの 1 行の内容を読み取り、配列に格納します。

例:

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. mb_convert_encoding 関数を使用する

mb_convert_encoding 関数を使用して、CSV ファイルのエンコード形式を UTF-8 に変換します。

例:

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);
    }
}
ログイン後にコピー

要約:

上記は、PHP CSV にインポートされた文字化けの問題を解決するためのいくつかの方法です。さまざまな方法は、さまざまな文字化けに適用可能です。問題がある場合は、自分に合った方法を選択できます。もちろん、CSV ファイルのインポート プロセス中に、インポートされたデータが完全で正しいことを確認するために、行区切り文字や列区切り文字などの他の問題にも注意する必要があります。

以上がCSVをphpにインポートする際に文字化けが発生する問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート