2011-10-26 4 views
0

나는 PHP로 CSV 파일을 만들고 있습니다. 내 CSV 파일에 데이터를 쓰려면, 나는 "fputcsv"함수를 사용합니다.PHP : Windows 인코딩 CSV 파일 만들기

이것이 문제입니다. 정상적으로 Excel로 생성 된 파일을 열 수 있습니다. 하지만 나는 파일을 상점 시스템 (이 경우 "shopware")으로 가져올 수 없습니다. 그것은 "데이터를 읽을 수 없습니다"와 같은 것을 말합니다.

그리고 지금은 단서 제공 : 내가 만든 파일을 열고 선택하면

은 "다른 이름으로 저장"을 선택 "CSV (쉼표로 구분)"를 유형이 파일은 shopware로 가져올 수 있습니다. PHP 함수 "mb_convert_encoding"에 대해 읽었습니다.이 함수는 데이터를 인코딩하는 데 사용되었지만 문제를 해결할 수는 없습니다.

도와 주시면 대단히 기쁩니다.

감사합니다.

답변

0

나는 fputcsv를 사용하여 인코딩을 설정할 수 없다고 생각합니다. 그러나 fputcsv는 setlocale을 사용하여 변경할 수있는 로케일 설정을 찾습니다.

어쩌면 파일을 사용자 브라우저로 직접 보내고 헤더 기능을 사용하여 contenttype과 charset을 변경할 수 있습니다.

+0

인코딩 유형을 fputcsv로 설정하지 않았습니다. fputcsv가 인수로 취하는 입력 배열의 값을 인코딩합니다. 파일은 다운로드가 아니라 상점웨어로 가져 오기를 시작하는 cronjob 용입니다. – user963942

0

시스템에 대해 잘 모르는 경우 대답 할 수 없습니다. 대부분 문자 인코딩과 관련이 없습니다. 잘못된 열 수 또는 열 머리글이 잘못되어 문제 일 수 있습니다. 그것은 문자 인코딩 문제가있는 경우

, 당신의 최선의 방법은 다음과 같습니다

$new_str = mb_convert_encoding($str, 'Windows-1252', 'auto'); 

은 또한 \ r에 \ n을, 단지 N하지 \와 줄 바꿈을 종료합니다.

그래도 작동하지 않으면 소프트웨어 문서를 확인해야합니다.

+0

각 행의 열 수가 정확하다는 것을 확인했습니다. 불행히도 제안 된 인코딩은 문제를 해결하지 못했습니다. 나는 그것이 fputcsv에 의해 자동적으로 작성되기 때문에 EOL 캐릭터에 아무런 영향을 미치지 않는다. 어떤 소프트웨어 문서를 의미합니까? – user963942

0

입력 해 주셔서 감사합니다. fputcsv를 fwrite로 바꾸어서이 문제를 해결했습니다. 그럼 그냥 "\ r \ n"(덕분에 wmil) 줄 끝에 추가해야하며 생성 된 파일을 shopware 읽을 수 있습니다.

분명히 fputcsv 함수는 \ n을 사용하고 \ r \ n는 EOL 문자로 사용하지 않습니다.