2012-08-06 7 views
1

나는 간단한 PHP 스크립트를 테스트로 만들었습니다. 나는 PHP가 일부 데이터에서 csv를 저장하도록하고 싶다. 이 스크립트는 작동하지만 Excel에서 열면 특수 문자가 횡설수설합니다.특수 문자로 Excel 용 CSV 파일 만들기

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Character Test</title> 
</head> 

<body> 
<ul> 
<?php 
$spanishDept = array('Swimwear'=>'Trajes de baῆo','Boys Swimwear'=>'Trajes de baῆo','Girls Swimwear'=>'Trajes de baῆo','Kids Shoes'=>'Zapatos de niῆos',"Scarves"=>'Paῆoletas','Children\'s'=>'Niῆos','Coffee Mugs'=>'Tasas para café'); 

$list = '"Item","Spanish"'."\r"; 
foreach($spanishDept AS $english=>$spanish) { 
     echo '<li>'.$english.': '.$spanish.'</li>'; 
     $list .= '"'.$english.'","'.$spanish."\"\r"; 
} 
$fp = fopen('theEXCELlist.csv',"w+"); 
fwrite($fp,$list,strlen($list)+100); 
?> 
</ul> 
</body> 
</html> 

내가 메모장에서 열고 ++ 또는 드림위버와 모든 괜찮지 만, Excel에서 좋은

+0

Excel에서 처리하기 전에 문자 변환이 필요할 수 있습니다. – Matt

+2

csv를 작성하는 경우 자신의 csv 문자열을 작성하는 대신 PHP의 fputcsv() 함수를 고려하십시오. –

+0

캐리지 리턴을 \ n 새 행으로 바꾸십시오. – Waygood

답변

1

어쩌면이 문제에 대한 해결책이 PHP 매뉴얼의 "Multibyte String Functions"절에서 거짓말을 할 수 없습니다.
즉, PHP 출력 파일은 BOM이있는 UTF-16 little endian 인코딩 파일이어야합니다.
사용중인 Excel 버전을 알 수 없지만 this post이 유용 할 수 있습니다.
다른 접근법은 Excel을 열고 특수 문자를 삽입하고 CSV로 저장 한 다음이 문자가 출력 파일에 어떻게 인코딩되는지 확인할 수 있습니다.