title: 【字符编码】PHP导出CSV中文乱码问题研究
date: 2018-02-02
categories:
- 技术
tags: - PHP
- 乱码
没有踩过字符编码问题的程序生涯是不完整的,还记得曾经还踩过Apache+PHP+MySQL的编码问题,不过那时候没总结下来,今天遇到了导出文件的编码问题,一起来好好研究一下:)
推荐一下这篇文章十分钟搞清字符集和字符编码,可以快速了解一下字符编码的知识
业务背景
把数据查询结果导出到CSV,由于Laravel Excel内部实现方法的问题,载入大数据量时,容易爆内存,因此这里分了两种实现,小数据量则采用Laravel Excel,大数据量则使用无缓冲查询+Yield,详情可参考这篇文章【Yield】大数据下的应用
由于使用了Laravel Excel工具集,先来看看这个工具内部是如何实现编码兼容的
# ..\vendor\maatwebsite\excel\src\Maatwebsite\Excel\Writers\LaravelExcelWriter.php
# 约347行
protected function _download(Array $headers = [])
{
// Set the headers
$this->_setHeaders(
$headers,
[
'Content-Type'