You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter使用CSV库导出阿拉伯语乱码问题求助

解决CSV导出阿拉伯字符乱码的有效方案

1. 确保数据库连接使用UTF-8编码

修改CodeIgniter数据库配置文件 application/config/database.php,设置兼容多语言的字符集:

$db['default']['char_set'] = 'utf8mb4';
$db['default']['dbcollat'] = 'utf8mb4_unicode_ci';

注:utf8mb4比传统utf8支持更多Unicode字符,更适合阿拉伯语这类非拉丁语系场景。

2. 添加UTF-8 BOM头(适配Windows Excel)

Windows下的Excel默认无法识别无BOM的UTF-8 CSV,需在输出前添加BOM标记,同时完善响应头:

function exportCSV(){
    $data = $this->m->excel($allocation, $category);
    $this->load->helper('csv');
    
    // 输出UTF-8 BOM,让Excel正确识别编码
    echo "\xEF\xBB\xBF";
    // 明确设置下载文件名和编码
    header('Content-Type: text/csv; charset=utf-8');
    header('Content-Disposition: attachment; filename="Balance.csv"');
    
    query_to_csv($data, TRUE, 'Balance.csv');
}

3. 自定义CSV导出函数(替代内置助手)

如果内置的query_to_csv未处理编码转换,可以自己实现导出逻辑,确保每个字段都是UTF-8:

function exportCSV(){
    $data = $this->m->excel($allocation, $category);
    if(empty($data)) return;
    
    // 输出BOM和响应头
    echo "\xEF\xBB\xBF";
    header('Content-Type: text/csv; charset=utf-8');
    header('Content-Disposition: attachment; filename="Balance.csv"');
    
    $output = fopen('php://output', 'w');
    // 写入表头
    fputcsv($output, array_keys($data[0]));
    // 遍历数据,统一转换为UTF-8
    foreach($data as $row){
        $utf8_row = array_map(function($val){
            // 自动检测原编码并转为UTF-8
            return mb_convert_encoding($val, 'UTF-8', 'auto');
        }, $row);
        fputcsv($output, $utf8_row);
    }
    fclose($output);
    exit;
}

4. 转换数据库中已有的非UTF-8字符

如果数据库存储的阿拉伯字符本身是其他编码(比如ISO-8859-6),在Model的excel方法里对数据转码:

function excel($allocation, $category){
    // 原查询逻辑...
    $result = $this->db->get()->result_array();
    
    // 转换每个字段为UTF-8
    foreach($result as &$row){
        foreach($row as &$value){
            // 从ISO-8859-6转为UTF-8,根据实际编码调整
            $value = mb_convert_encoding($value, 'UTF-8', 'ISO-8859-6');
        }
    }
    return $result;
}

内容的提问来源于stack exchange,提问作者Syam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 05:22:24