>  기사  >  백엔드 개발  >  csv를 PHP로 가져올 때 문자가 깨지는 문제를 해결하는 방법

csv를 PHP로 가져올 때 문자가 깨지는 문제를 해결하는 방법

PHPz
PHPz원래의
2023-03-29 10:12:441109검색

PHP에서 CSV를 가져오는 과정에서 가져온 CSV 파일에서 문자가 깨져서 가져온 데이터에 오류가 발생하는 경우가 있습니다. 그러면 CSV 가져오기에서 문자가 깨지는 문제를 해결하는 방법은 무엇입니까? 다음은 몇 가지 해결 방법입니다.

1. CSV 파일 인코딩 형식 설정

우선 가져온 CSV 파일 인코딩 형식이 PHP 파일 인코딩 형식과 일치해야 Excel에서 "다른 이름으로 저장"을 선택할 때 저장할 인코딩 형식을 선택할 수 있습니다. 또는 Notepad++와 같은 텍스트 편집기를 사용하여 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 파일의 한 줄 내용을 읽고 이를 배열에 저장합니다.

예:

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 함수를 사용하세요

CSV 파일의 인코딩 형식을 UTF-8로 변환하려면 mb_convert_encoding 함수를 사용하세요.

예:

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.