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