php 输出 excel 中文乱码问题?

发布于 2022-09-11 16:13:39 字数 1548 浏览 14 评论 0

function xlsBOF() {
    echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
}
function xlsEOF() {
    echo pack("ss", 0x0A, 0x00);
}
function xlsWriteNumber($Row, $Col, $Value) {
    echo pack("sssss", 0x203, 14, $Row, $Col, 0x0);
    echo pack("d", $Value);
}
function xlsWriteLabel($Row, $Col, $Value) {
    $L = strlen($Value);
    echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
    echo $Value;
}

ob_end_clean();
ob_clean();
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header('Content-Type: application/vnd.ms-excel; charset=utf-8');
header("Content-Transfer-Encoding: binary");
$filename = urlencode('export_'.date("Y-m-d-His").'.xls');
header("Content-Disposition: attachment; filename='.$filename.'");
header("Content-Transfer-Encoding: binary");
header("Pragma: no-cache");
header("Expires: 0");
header("Pragma: public");

xlsBOF();

xlsWriteLabel(0, 0, "中文好");
xlsWriteLabel(0, 1, "中文妙");
xlsWriteLabel(0, 2, "中文第一");

$order = $pdo->query(
  "SELECT * FROM `order_record` as r "
);
$i = 1;
while ($row = mysqli_fetch_array($order)) {
  xlsWriteNumber($i, 0, 230);
  xlsWriteLabel($i, 1, "John");
  xlsWriteLabel($i, 2, "john@yahoo.com");
  $i++;
}
xlsEOF();

这是我的代码
我有找一些方法放上去仍然是乱码就像这样
这是啥问题?

clipboard.png

然后每次打开都会有这个视窗
但明明就是有数据的呀

clipboard.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

等风来 2022-09-18 16:13:39

Excel 默认编码是 GBK,所以,你的中文要转为 GBK 才不会乱码

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文