2012-08-23 2 views
1

나는 잠시 동안이 책을 읽었습니다. 데이터베이스에서 데이터를 가져 오는 PHP 스크립트에서 .csv 파일을 만들려고합니다. 제 문제는 특수 문자가 올바르게 표시되지 않는다는 것입니다.php to csv 및 특수 문자

이상한 점은 데이터베이스에서 가져온 특수 문자가 올바르게 표시된다는 것입니다.하지만 항목에 특정 문자를 추가해야합니다.

예를 들어, 데이터베이스는 "Humidité"(습도에 대해 불어)를 반환합니다. 내 보낸 .csv 파일에 올바르게 표시됩니다.

그러나

내가

Humidité: 10% [weird characters] 20% 

그래서 humidité에서 "é"는 괜찮 표시됩니다 나는 CSV에서 내 PHP 스크립트

$member->humidity . ': 10% à 20%'; 

에서 문자열을 추가 말할 수 있지만 돈 "à"PHP에서 추가 된 것을 볼 수 없습니다. 일부 특수 문자가 올바르게 내 생각 엔이 문제가 내 아파치 서버에서 오는 것입니다 그래서

$data = the whole csv file in a string  

header('Content-Encoding: UTF-8'); 
header('Content-type: text/csv; charset=UTF-8'); 
header("Content-Disposition: attachment; filename=file.csv"); 
header('Content-Transfer-Encoding: binary'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Pragma: public'); 
header("Content-Length: " . strlen($data)); 
echo "\xEF\xBB\xBF"; // UTF-8 BOM 
echo $data; 

표시되기 때문에

내 헤더는 확인을 보인다.

내가 찾은 this 내 php.ini에서 내 default_charset = "utf-8"을 변경하고 그것을 해결하지 못한 나의 httpd.conf 파일에 AddDefaultCharset UTF-8을 추가했습니다.

아이디어가 있으십니까? 감사합니다.

+0

mysql의 테이블이 UTF 8 형식입니까? –

+0

@TuhinSubhraDey 아니요. "latin1_swedish_ci"에 있습니다. –

+0

UTF8 일반 CI로 변경하고 데이터를 저장하고 나머지 작업을하십시오. –

답변

4

아마 편집기가 UTF-8으로 설정되지 않았습니다. 편집기의 charset 설정을 확인하십시오. Notepad++과 같은 편집기를 사용하여 파일을 변환 할 수도 있습니다.

+0

downvote 이유? 제대로 인쇄되지 않는 문자는 파일에 정적으로 삽입 한 문자뿐입니다. 따라서 편집기의 charset 일 가능성이 가장 높습니다. –

+0

Downvote가 내게 아니었다! Dreamweaver, Excel 및 TextEdit (Mac)에서 파일을 열었습니다.이 3 가지 모두 똑같은 것을 보여줍니다. –

+0

@ComputerArts : Dreamweaver를 사용하는 경우 http://tlt.its.psu.edu/suggestions/international/web/tips/dreamweaver.html#dreamtype –

-1

데이터가 UTF-8이기 때문에 PHP와 MySQL 모두에게 알릴 필요가 있습니다. 왜냐하면 둘 다 ASCII로 기본 설정 되었기 때문입니다. 나는 이것을 다음과 같이했다 :

setlocale(LC_ALL, 'en_US.utf8'); 
mysql_query("SET NAMES 'utf8'"); 

.

+0

SQL의 데이터가 올바르게 인쇄됩니다 ... –