【发布时间】:2012-06-08 12:21:58
【问题描述】:
我想对用户选择的 SQL 数据进行 ASCII 文本下载,可以立即在记事本中打开。数据库连接工作正常,启动下载的“标题”命令也能正常工作,但如果我能让行尾字符正确显示,我会被诅咒的。
标题是通过以下方式静态定义的:
$header = <<<EOD
#Some header information
#goes here on multiple
#lines
EOD;
每行数据都与制表符连接:
$RS_SQL = $DBinterface->dbGetRecordSet($someQuery);
foreach($RS_SQL as $row) {
$rowdata = '';
foreach($row as $key=>$val) {
if((!(int)$key) && $key!='0') {
$rowdata[] = $row[$key];
}
}
$dataOutput.=implode("\t",$rowdata)."\n";
}
header("Content-type: text/plain; charset=ISO-8859-1");
header("Content-Disposition: attachment; filename=SQLDataExport.txt");
echo $header."\n".$dataOutput;
标题在记事本中显示得很好,并且所有制表符间距都完全按照设计...但是,任何通过 \r 或 \n 字符很好地格式化行的尝试都会导致单行包含未知字符(方框),其中换行应该是。
我尝试将文件写入服务器,然后读取流并输出;尝试了标头信息的变体...有点明白通过二进制将页面下载到浏览器的方式有些奇怪,但是?
我错过了什么?
非常感谢。
【问题讨论】:
-
与您的方框问题无关,但记事本需要
\r\n而不仅仅是\n否则它将忽略换行符。
标签: php html download http-headers ascii