2012-08-06 123 views
1

我已经创建了一个简单的PHP脚本作为测试。我想让PHP从一些数据中保存一个csv。这个脚本有效,但是当我在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> 

我可以在记事本打开它++或Dreamweaver和一切都很好,但在Excel中没有很好的

+0

在excel可以处理它之前,您可能需要做一些字符转换。 – Matt 2012-08-06 16:21:50

+2

如果你正在编写csv,考虑使用PHP的fputcsv()函数,而不是创建自己的csv字符串 – 2012-08-06 16:23:06

+0

用\ n换行符\ n换行符 – Waygood 2012-08-06 16:24:29

回答

1

也许解决这个问题在于PHP手册的“Multibyte String Functions”部分。
换句话说,PHP输出文件似乎应该是一个UTF-16 little endian编码文件(带BOM)。
我不知道您使用的是哪个版本的Excel,但this post可能会有用。
另一种方法是打开Excel,插入特殊字符,另存为CSV,最后检查这些字符在输出文件中的编码方式。