【发布时间】:2017-09-08 13:56:56
【问题描述】:
我正在尝试修改我的 CSV 导出。 但它不会将我的 CSV 从 UTF-8 转换/保存为 ISO-8859-1
请问有什么我做错的想法吗?
实际上自从修改后,我得到了一个空的 CSV 文件...
(php 7.0.x)
function my_GenerateCSV($prefix, $csvarray, $getMonth){
### Generate CSV File from CSVArray
if ($prefix == 'sepa'){
$date = '-'.getTodaysDate();
}
$month = $getMonth;
$filename = 'private/'.$prefix.'-'.$month.$date.'.csv';
$fp = fopen(ROOTDIR . '/'.$filename, 'w');
foreach ($csvarray as $key => $value) {
//fputcsv($fp, $value, ';');
fputcsv($fp, convertToISOCharset($value), ';');
}
fclose($fp);
return $filename;
}
function convertToISOCharset($string) {
$string = mb_convert_encoding($string, "ISO-8859-1", "UFT-8");
return $string;
}
解决方案:
function convertToISOCharset($array)
{
foreach($array as $key => $value)
{
if(is_array($value))
{
$array[$key] = convertToISOCharset($value);
}
else
{
$array[$key] = mb_convert_encoding($value, 'ISO-8859-1', 'UTF-8');
}
}
return $array;
}
【问题讨论】:
-
convertToISOCharset($string)作用于字符串.....fputcsv($fp, convertToISOCharset($value), ';');...fputcsv()期望数组作为第二个参数,而不是convertToISOCharset()返回的字符串 -
修改
convertToISOCharset()以使用数组....或array_map()调用convertToISOCharset() -
我明白了!感谢 ARRAY 的事情。它适用于这个批准的答案:stackoverflow.com/questions/9096347/…
-
很高兴您找到了解决问题的方法。为了与本站问答结构保持一致,请将其添加为答案,以便其他可能有类似问题的人轻松找到。
-
好吧,我认为回答自己的问题不行:)
标签: php csv utf-8 iso-8859-1