gpt4 book ai didi

带有 UTF-8 问题的 PHP fputcsv

转载 作者:行者123 更新时间:2023-11-30 23:39:15 25 4
gpt4 key购买 nike

我试图让我的客户在 Excel 中查看一些 MySQL 数据。我使用了 PHP 的 fputcsv() 函数,例如:

public function generate() {
setlocale(LC_ALL, 'ko_KR.UTF8');

$this->filename = date("YmdHis");
$create = $this->directory."Report".$this->filename.".csv";

$f = fopen("$create","w") or die("can't open file");
fwrite($f, "\xEF\xBB\xBF");

$i = 1;
$length = count($this->inputarray[0]);

fwrite($f, $this->headers."\n");

// print column titles
foreach($this->inputarray[0] as $key=>$value) {
$delimiter = ($i == $length) ? "\n\n" : ",";
fwrite($f, $key.$delimiter);
$i++;
}

// print actual rows
foreach($this->inputarray as $row) {
fputcsv($f, $row);
}
fclose($f);
}

我的客户是韩国人,MySQL 数据库的很大一部分包含 utf8_unicode_ci 中的值。通过使用上述功能,我成功​​地生成了一个 CSV 文件,其中包含正确编码的数据,可以在我的机器上的 Excel 中正常打开(英文的 Win7),但是当我在客户端计算机(韩文的 Win7)上的 Excel 中打开文件时,字符又坏了。我尝试取出 header (\xEF\xBB\xBF),并注释掉 setlocale,但无济于事。

你能帮我解决这个问题吗?

最佳答案

如果,如您所说,您的 CSV 文件有“正确编码的数据” - 即它包含一个有效的 UTF-8 字节流,并假设该文件的字节流在您的客户端站点相同(例如,文件传输问题未在传输过程中损坏)那么这听起来像是客户端计算机上的 Excel 无法正确解释 UTF-8 的问题。这可能是因为它不受支持或导入时需要选择某些选项以指示编码。因此,您可以尝试以不同的编码生成文件(使用 mb_convert_encodingiconv)。

如果您让您的客户导出包含韩文字符的 CSV,那么您将能够查看该文件并确定正在生成的编码。然后您应该尝试使用该编码。

关于带有 UTF-8 问题的 PHP fputcsv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4824202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com