fputcsv在字段末尾添加奇怪的字符

时间:2016-04-04 12:28:48

标签: php mysql csv encryption

我有一个加密和存储用户条目的表单。然后我有一个导出功能,允许管理员解密并导出所有条目的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

任何帮助将不胜感激,我无法在任何地方发现类似问题的任何帖子!

1 个答案:

答案 0 :(得分:0)

您需要在fputcsv,分隔符和附件中指定更多参数。

fputcsv($output, array(...), ',', '"');

CSV文件中的分隔符应为';'。如果您的分隔符为',',则会遇到地址问题。