UTF8 中的制表符字符
tabbed char in UTF8
我正在尝试创建我的 mysql table 的 xls 文件输出,我需要文件 export.php 的 UTF8 编码,因为斯洛伐克字符 - ľ č š ť ž ý .. .但是当我将它转换为 UTF8 时我的脚本无法打印 \t character
// part of export.php
header("Content-Type: application/xls");
header("Content-Disposition: attachment; filename=export.xls");
header("Pragma: no-cache");
header("Expires: 0");
$sql = ("select * from zakaznici");
$db->query("SET NAMES 'utf8'");
if (!$result = $db->query($sql))
{
die('There was an error running the query [' . $db->error . ']');
}
// define separator (defines columns in excel & tabs in word)
$sep = "\t"; //tabbed character
// start of printing column names as names of MySQL fields
$finfo = $result->fetch_fields();
foreach($finfo as $val)
{
printf("%s\t", $val->name);
}
print ("\n");
$schema_insert = "";
while ($ser = $result->fetch_assoc())
{
$id = $ser['id'];
$email = $ser['email'];
$password = $ser['pass'];
$schema_insert.= $id . $sep . $email . $sep . $password;
print ("\n");
}
$schema_insert = str_replace($sep . "$", "", $schema_insert);
$schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert);
$schema_insert.= "\t";
print (trim($schema_insert));
print "\n";
\n 字符工作正常..只有 \t 与 UTF8 不工作
谢谢你的帮助
我的猜测是,生成的文件开头缺少 UTF-8 BOM 标记
文件。因此,我建议在内容输出之前添加 BOM,如下所示:
print "\xEF\xBB\xBF";
print trim($schema_insert);
print "\n";
有人建议使用mb_convert_encoding()
,看这里:php header excel and utf-8
我正在尝试创建我的 mysql table 的 xls 文件输出,我需要文件 export.php 的 UTF8 编码,因为斯洛伐克字符 - ľ č š ť ž ý .. .但是当我将它转换为 UTF8 时我的脚本无法打印 \t character
// part of export.php
header("Content-Type: application/xls");
header("Content-Disposition: attachment; filename=export.xls");
header("Pragma: no-cache");
header("Expires: 0");
$sql = ("select * from zakaznici");
$db->query("SET NAMES 'utf8'");
if (!$result = $db->query($sql))
{
die('There was an error running the query [' . $db->error . ']');
}
// define separator (defines columns in excel & tabs in word)
$sep = "\t"; //tabbed character
// start of printing column names as names of MySQL fields
$finfo = $result->fetch_fields();
foreach($finfo as $val)
{
printf("%s\t", $val->name);
}
print ("\n");
$schema_insert = "";
while ($ser = $result->fetch_assoc())
{
$id = $ser['id'];
$email = $ser['email'];
$password = $ser['pass'];
$schema_insert.= $id . $sep . $email . $sep . $password;
print ("\n");
}
$schema_insert = str_replace($sep . "$", "", $schema_insert);
$schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert);
$schema_insert.= "\t";
print (trim($schema_insert));
print "\n";
\n 字符工作正常..只有 \t 与 UTF8 不工作 谢谢你的帮助
我的猜测是,生成的文件开头缺少 UTF-8 BOM 标记 文件。因此,我建议在内容输出之前添加 BOM,如下所示:
print "\xEF\xBB\xBF";
print trim($schema_insert);
print "\n";
有人建议使用mb_convert_encoding()
,看这里:php header excel and utf-8