>백엔드 개발 >PHP 튜토리얼 >php_php 팁에서 fgetcsv를 사용하여 csv 파일을 읽을 때 잘못된 문자에 대한 솔루션

php_php 팁에서 fgetcsv를 사용하여 csv 파일을 읽을 때 잘못된 문자에 대한 솔루션

WBOY
WBOY원래의
2016-05-16 20:32:391952검색

이 기사의 예에서는 PHP에서 fgetcsv를 사용하여 csv 파일을 읽을 때 문자가 깨지는 문제에 대한 해결 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.

일반적으로 PHP에서 문자가 깨지는 현상은 주로 인코딩 문제로 인해 발생합니다. 여기서는 fgetcsv가 csv 파일을 읽을 때 문자가 깨지는 원인과 해결 방법을 분석합니다.

예는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
function get_csv_contents( $file_target ){
$handle = fopen( $file_target, 'r');
while ($data = fgetcsv($handle, 1000, ",")) {

$num = 개수($data);
echo "

$row 줄의 $num 필드:
n";
$행 ;
for ($c=0; $c < $num; $c ) {
에코 $data[$c]."
n";;
/*echo getUTFString($data[$c])*/
}
}
fclose($handle);
}


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

코드 복사 코드는 다음과 같습니다.
$data = eval('return '.iconv(' gbk', 'utf-8',var_export($data,true)).';');

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

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

Linux 시스템이 기본 설정을 사용하는 경우 Linux 서버에서 gbk csv 형식의 파일을 처리할 때 문자가 깨져 나타나는 현상이 발생합니다.

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

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

코드 복사 코드는 다음과 같습니다.
setlocale(LC_ALL,array('zh_CN.gbk', 'zh_CN.gb2312','zh_CN.gb18030'));

사용할 로케일을 결정하려면 Linux 명령 locale -a를 사용하여 시스템이 지원하는 로케일을 확인할 수 있습니다.

이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.

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