我有一个加密并存储用户条目的表格。然后,我具有导出功能,该功能允许管理员解密和导出所有条目的csv。

它可以很好地解密,如果我将数组打印到页面上,一切看起来都很好,但是当我生成CSV时,它会在某些数据之后添加奇数符号,在记事本或excel中打开时会出现问号,音乐符号,菱形和某些单元格(但不是全部)中的其他奇数字符。我找不到模式-如果在标题字段中添加“ Miss”或“ Mr”,它将添加字符,如果添加我的名字(Zoe),则不会!我的数据存储为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


任何帮助将不胜感激,我找不到任何地方出现类似问题的帖子!

最佳答案

您需要在fputcsv,定界符和机柜中指定更多参数。

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


分隔符应在CSV文件中为';'。如果分隔符为',',则地址会出现一些问题。

关于php - fputcsv在字段末尾添加奇怪的字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36402688/

10-11 12:45
查看更多