【发布时间】:2012-08-03 15:36:19
【问题描述】:
我创建了一个简单的 PHP 脚本作为测试。我想让 PHP 从一些数据中保存一个 csv。这个脚本有效,但是当我在 Excel 中打开它时,特殊字符是乱码。
<!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>
我可以在 NotePad++ 或 Dreamweaver 中打开它,一切都很好,但在 Excel 中就不行了
【问题讨论】:
-
你可能需要做一些字符转换才能让excel处理它。
-
如果您正在编写 csv,请考虑使用 PHP 的 fputcsv() 函数,而不是创建自己的 csv 字符串
-
用\n换行替换你的\r回车
-
尽管它们通常会引起很多麻烦,但字节顺序标记实际上可能会有所帮助,因为(希望)它将强制 Excel 进入 UTF8 模式。不过,您当然应该在这里查看
fputcsv(),它会让您的生活更加轻松,并且您的代码更不容易出错。 -
这不是您正在构建的 csv 文件。这是一个 HTML 文件。