>백엔드 개발 >PHP 문제 >PHP가 잘못된 CSV 문자를 생성하는 경우 수행할 작업

PHP가 잘못된 CSV 문자를 생성하는 경우 수행할 작업

藏色散人
藏色散人원래의
2021-05-18 09:42:213089검색

php는 출력 csv 형식 파일에 BOM이 없기 때문에 csv 왜곡된 문자를 생성합니다. 해결 방법은 BOM을 사용하여 "header("Content-type:text/csv;charset= gb2312");".

PHP가 잘못된 CSV 문자를 생성하는 경우 수행할 작업

이 문서의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터

PHP 출력 csv 파일의 중국어 왜곡 한자에 대한 솔루션

PHP 다운로드 파일은 종종 바이트 스트림 출력을 사용합니다. 따라서 일반적으로 사용되는 csv 형식 다운로드 코드는 다음과 같습니다.

header("Content-Type: application/force-download"); 
header("Content-type:text/csv;charset=gb2312"); 
header("Content-Disposition:filename=打开邮件导出".date("YmdHis").".csv"); 
echo "收件人邮箱,收件人姓名,发送时间\r";
 ob_end_flush();
 foreach($list as $rs) { 
echo $rs->toemail.",".$rs->name.",".date('Y-m-d H:i:s',$rs->addtime)."\r"; flush();
 }
 exit;

이렇게 다운로드한 csv 파일은 메모장이나 서브라임 텍스트 등의 편집기로 여는 것이 정상인데, 엑셀로 열면 깨져서 나옵니다. 그 이유는 출력되는 csv 형식 파일에 BOM이 없기 때문입니다. BOM 일반적인 상황에서는 BOM을 제거해야 하지만 csv 파일은 BOM 표시 문자 인코딩을 사용해야 합니다.

해결 방법은 다음과 같습니다.

header("Content-Type: application/force-download");
header("Content-type:text/csv;charset=gb2312");
header("Content-Disposition:filename=打开邮件导出".date("YmdHis").".csv");
echo chr(0xEF).chr(0xBB).chr(0xBF);
echo "收件人邮箱,收件人姓名,发送时间\r";
ob_end_flush();
foreach($list as $rs)
{
   echo $rs->toemail.",".$rs->name.",".date('Y-m-d H:i:s',$rs->addtime)."\r";
   flush();
}
exit;

Linux와 Window의 줄 바꿈 차이로 인해 발생합니다. 위 코드가 Linux 서버에서 나쁜 반응을 보이는 경우 "r"을 "rn"으로 변경할 수 있습니다.

추천 학습: "PHP 비디오 튜토리얼"

위 내용은 PHP가 잘못된 CSV 문자를 생성하는 경우 수행할 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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