我有一个加密和存储用户条目的表单。然后我有一个导出功能,允许管理员解密并导出所有条目的csv。
它解密很好,如果我将我的阵列打印到页面上它看起来都很好,但是当我生成CSV时它会在一些数据之后添加奇数符号,当在记事本或excel中打开时会出现问号,音乐一些细胞中的符号,钻石和其他奇怪的字符,但不是全部。我无法发现一种模式 - 如果我添加"小姐"或" Mr"在标题字段中添加字符,如果我添加我的名字(佐伊)它不会!我的数据存储为BINARY,但我已将某些字段更改为VARCHAR,这没有区别,我也尝试过utf8_encoding我的数据。
这是我的代码:
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=data.csv');
$output = fopen('php://output', 'w');
fputcsv($output, array('Title', 'First Name', 'Last Name', 'Address', 'Age', 'Email', 'I am...'));
$encryption_key = "";
//then I do my database select
foreach ( $theresults as $result ) {
//then I decrypt my data and pass it in to variables
$responses = array($title,$fname,$lname,$address,$age,$emailadd,$who);
fputcsv($output, $responses);
}
我注意到的一件事是当我在记事本中打开它时,每个元素周围的引号都是不一致的(这显然没有奇怪的字符,因为它不会将它们复制到stackoverflow中):
Title,"First Name","Last Name",Address,Age,Email,"I am..."
Miss,Zoe,Tester,,29,,other
Zoe,Zoe,Zoe,Zoe,29,,other
Mr,Test,Testington,"an address",35,,diagnosed
任何帮助将不胜感激,我无法在任何地方发现类似问题的任何帖子!
答案 0 :(得分:0)
您需要在fputcsv,分隔符和附件中指定更多参数。
fputcsv($output, array(...), ',', '"');
CSV文件中的分隔符应为';'
。如果您的分隔符为','
,则会遇到地址问题。