>백엔드 개발 >PHP 문제 >PHP fgetcsv의 잘못된 문제를 해결하는 방법

PHP fgetcsv의 잘못된 문제를 해결하는 방법

藏色散人
藏色散人원래의
2020-07-27 10:06:083985검색

가져온 csv 파일이 ansi 인코딩으로 저장되었기 때문에 php fgetcsv가 깨졌습니다. 해결 방법은 중국어 운영 체제 환경의 해당 인코딩을 "gbk"로 설정하는 것입니다. 즉, 브라우저 문자 인코딩을 수동으로 "gbk"로 변경합니다. 할 수 있다.

PHP fgetcsv의 잘못된 문제를 해결하는 방법

권장 사항: "PHP Tutorial"

php는 fgetcsv를 사용하여 csv 파일을 읽고 잘못된 문자에 대한 솔루션을 제공합니다.

일반적으로 PHP에서 잘못된 문자가 발생하는 것은 주로 인코딩 문제 때문입니다. fgetcsv에서 읽은 잘못된 csv 파일에 대한 이유와 해결 방법을 분석한 예를 제공합니다.

예제는 다음과 같습니다.

코드는 다음과 같습니다.

function get_csv_contents( $file_target ){
 $handle  = fopen( $file_target, 'r');
 while ($data = fgetcsv($handle, 1000, ",")) {
 
  $num = count($data);
  echo "<p> $num fields in line $row: <br>n";
  $row++;
  for ($c=0; $c < $num; $c++) {
   echo $data[$c]. "<br>n";;
   /*echo getUTFString($data[$c])*/
  }
 }
 fclose($handle);
}

가져온 csv 파일은 ansi 인코딩으로 저장됩니다. 중국 운영체제 환경의 경우 브라우저 문자 인코딩을 수동으로 변경하여 gbk 인코딩해야 합니다. gbk에서 왜곡된 문자가 나타나며, 다음과 같이 조정되었습니다.

코드는 다음과 같습니다.

$data = eval(&#39;return &#39;.iconv(&#39;gbk&#39;,&#39;utf-8&#39;,var_export($data,true)).&#39;;&#39;);

$data는 인코딩으로 변환해야 하는 배열입니다.

보충: LINUX FGETCSV는 문자가 왜곡된 GBK 데이터를 읽습니다.

Linux 시스템이 기본 설정을 사용하는 경우 Linux 서버에서 gbk csv 형식 파일을 처리하면 문자가 왜곡되어 나타납니다.

해결책은 다음과 같습니다.

setlocale 함수를 사용하여 환경 변수를 설정합니다. 예를 들어 gb를 사용하여 지역 설정을 지정하려면 fgetcsv 앞에 다음 명령문을 사용할 수 있습니다.

코드는 다음과 같습니다.

setlocale(LC_ALL,array(&#39;zh_CN.gbk&#39;,&#39;zh_CN.gb2312&#39;,&#39;zh_CN.gb18030&#39;));

어떤 로케일이 구체적으로 사용됩니까? Linux 명령 locale -a를 사용하여 시스템이 어떤 로케일을 지원하는지 확인할 수 있습니다

위 내용은 PHP fgetcsv의 잘못된 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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