PHP로 csv를 내보낼 때 인코딩을 설정하는 방법: 1. iconv 메서드를 사용하여 내보낸 콘텐츠를 utf-8에서 gb2312로 트랜스코딩합니다. 2. mb_convert_encoding 메서드를 사용하여 인코딩을 변환합니다.
이 문서의 운영 환경: Windows 7 시스템, PHP 버전 7.1, Dell G3 컴퓨터
php로 csv 설정 인코딩을 내보내는 방법은 무엇입니까? PHP에서 CSV로 잘못된 코드를 내보내시겠습니까?
우리는 PHPexcel을 사용하여 일부 데이터를 내보냈습니다. Phpexcel은 10,000개 이상의 데이터를 내보낼 때 시간 초과 및 메모리 폭발을 유발하므로 나중에 데이터를 csv 형식으로 내보내는 것으로 전환했습니다.
PHP를 사용하여 csv 파일을 내보낼 때 많은 친구들이 다양한 잘못된 문제에 직면했다고 생각합니다. 인터넷에서 많이 검색했고 BOM을 추가하여 모든 솔루션을 찾았습니다. 이 방법을 여러 번 시도했지만 테스트 및 프로덕션 환경에서는 작동하지 않았습니다.
나중에 iconv 방법을 사용하여 내보낸 콘텐츠를 utf-8에서 gb2312로 트랜스코딩했습니다. 마침내 기적이 나타났고 정상적으로 표시될 수 있었습니다. 그러나 동료는 그 중 수십 개의 데이터가 누락된 것을 발견했습니다. 우리는 400개 이상의 데이터를 내보냈습니다(저는 이를 하나씩 트랜스코딩한 다음 csv 문자열로 연결했습니다). 그래서 Du Niang에 가서 iconv 트랜스코딩 실패 문제를 찾아보니 iconv에 버그가 있는 것으로 나타났습니다. 이는 수십 개의 데이터가 누락된 이유였으며 mb_convert_encoding을 사용하여 변환하는 방법도 제공합니다. 그래서 약간 수정하여 mb_convert_encoding 방식을 사용하도록 변경했습니다. 로컬 머신에서의 테스트는 매우 정상이었습니다. 코드는 다음과 같습니다.
$str = mb_convert_encoding($str,'gb2312');
하지만 데이터를 온라인으로 내보낼 때 여전히 문자가 깨져 있습니다. , 그러나 트랜스코딩 없이 이전에 왜곡된 문자와 동일하지 않아 mb_convert_encoding 방법이 작동함을 나타냅니다. mb_convert_encoding 메소드에는 $from_encoding이라는 세 개의 매개변수가 있는 것을 확인했습니다. 세 번째 매개변수는 선택적인 매개변수이며 인터넷에 있는 대부분의 예제에서는 세 번째 매개변수도 기본적으로 null입니다. 그래서
$str = mb_convert_encoding($str,'gb2312','utf-8');
로 변경해서 로컬 개발 머신에서 테스트해봤는데, 프로덕션 환경에 퍼블리시해 보니 모든 게 정상이더군요.
왜 그럴까요? 정말 자세히 알아볼 시간이 없습니다. 혹시 아시는 분 계시면 알려주세요
추천 학습: "PHP 동영상 튜토리얼"
위 내용은 PHP로 CSV를 내보내고 인코딩을 설정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!