PHP 使用 Windows-1252 编码创建 CSV 文件

问题描述 投票:0回答:1

我想生成并保存带有“Windows-1252”编码的 CSV 文件。

我的基本代码:

$filename = 'path/to/file.csv';
$file = fopen($filename, 'w');
$datas[] = [
    "data 1",
    "data 2",
    "data 3",
    // ...
];
foreach ($datas as $data) {
    fputcsv($file, $data, ';');
}
fclose($file);

我尝试添加一些标题:

$options = [
    'http'=> [
        'header'=>
            "Content-Encoding: Windows-1252\r\n" .
            "Content-Type: text/csv; charset=Windows-1252\r\n"
    ]
];

$context = stream_context_create($options);

$file = fopen($tmpFile, 'w', false, $context);

并在调用 fputcsv() 之前转换每一行:

foreach ($datas as $key => $data) {
    foreach ($data as $line) {
                // I tried this :
        $datas[$key] = iconv('UTF-8', 'Windows-1252', $line);
                // and this :
        $datas[$key] = mb_convert_encoding($line, 'Windows-1252');
    }
    fputcsv($file, $datas, ';');
}

但没有成功:

$ file --mime-encoding *
file.csv:                 utf-8

我还应该做什么?

非常感谢。

php encoding export-to-csv windows-1252
1个回答
0
投票

我终于找到了一个解决方案,在“Windows-1252”中使用“mb_convert_encoding()”后,放弃“fputcsv()”并将其替换为我的行的“fwrite()”。

它不是那么漂亮,但它有效:)

© www.soinside.com 2019 - 2024. All rights reserved.