【问题标题】:CSV from UTF8 to ISO-8859-1CSV 从 UTF8 到 ISO-8859-1
【发布时间】: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


【解决方案1】:

作为答案的解决方案,根据要求:

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;
}

【讨论】:

  • 谢谢大家,我刚刚从过去 2 天找到解决方案,现在我得到了正确的解决方案。
猜你喜欢
  • 1970-01-01
  • 2016-02-19
  • 2010-11-03
  • 2012-01-13
  • 1970-01-01
  • 1970-01-01
  • 2014-08-26
  • 2011-08-26
  • 1970-01-01
相关资源
最近更新 更多