2013-08-16 2 views
1

fgetcsv을 실행하면 아랍어 문자가 사라지고 아직 fopen에서 출력을 인쇄하면 아랍어 문자가 잘 표시됩니다. 이상하게도 이것은 우리의 프로덕션 환경에서만 발생하며, 개발 환경에서는 그렇지 않습니다. fgetcsv은 아랍 문자를 잘 읽습니다. 프로덕션 환경에서 올바르게 설정되지 않은 서버 설정이 있습니까?fgetcsv()에서 아랍어 문자를 읽을 수 없음

+1

csv 파일의 인코딩은 무엇입니까? – user4035

+0

재생할 수 없음 : utf8에서 아랍어로 테스트 파일을 만들었습니다. fgetcsv가 올바르게 작동했습니다. – user4035

+0

파일을 게시 할 수 있습니까? – pguardiario

답변

2

fgetcsv()은 시스템 로캘을 기반으로 파일의 인코딩을 가정합니다. PHP 매뉴얼 상태 :

로케일 설정은이 기능에 의해 고려됩니다. LANG이 예 : en_US.UTF-8,이 기능으로 1 바이트 인코딩의 파일을 잘못 읽습니다.

당신은 당신이 시스템에 로케일 설정을 비교하고 영구적으로 그 중 하나를 변경하거나 fgetcsv() 이전 setlocale(LC_ALL, 'ar_AE.utf8') 같은 것을 (두 번째 인수는 파일의 인코딩에 따라 분명히 것)를 사용 할 수 있습니다

.

+0

아랍어는 1 바이트 인코딩이 될 수 없으므로 적용되지 않습니다. – pguardiario

+0

@pguardiario 나도 알지만 시스템 로케일은 UTF-16을 기반으로 할 수도 있습니다. – lafor

+0

감사합니다. 로케일이 프로덕션 서버에서 제대로 설정되지 않았습니다. 'fgetcsv' 전에'setlocale (LC_ALL, 'en_US.UTF-8')'을 사용하여 트릭을 만들었습니다. – Cole

관련 문제