0

我正在尝试阅读希伯来语的 CSV 文件,以便将多个帖子插入 Wordpress。我已将 excel 表保存为 CSV(逗号分隔)。在 Sublime Text 中进行一些编码操作后,我可以在任何文本编辑器中正常看到希伯来语内容。

但是,当我尝试使用fgetcsv希伯来字母读取文件的内容时,会被选择性地忽略,即字段中以数字或拉丁字母开头的字母显示正确。数字/拉丁字母之前的希伯来字母被忽略并从输出中省略。

如果我使用file_get_contents并 var_dump 它,我会正确获取整个内容,因此问题出在fgetcsv.

中的代码functions.php

function csv_to_array($filename='', $delimiter=',')
{
    if(!file_exists($filename) || !is_readable($filename)) {
        return FALSE;
        }

    $header = NULL;
    $data = array();

    if (($handle = fopen($filename, 'r')) !== FALSE)
    {
        while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
        {
            if(!$header): 
                $header = $row;
            else:
                $data[] = $row;
            endif;
        }
        fclose($handle);
    }
    return $data;
}

用过的:

if (isset($_FILES['events'])) {
    extract($_FILES['events']);
    $events = csv_to_array($tmp_name);
4

1 回答 1

1

给世界带来的语言现在不太可能T_PAAMAYIM_NEKUDOTAYIM与希伯来字母有问题;-)。

检查字符串的编码var_dump可能还不够!)并且 Manvel 对这个问题的解决方案可能对您有所帮助:

问题是该函数返回 UTF-8(它可以使用 进行检查 mb_detect_encoding),但不转换,并且这些字符采用 UTF-8。Т因此,有必要使用iconv反向转换为初始编码(Windows-1251 或 CP1251) 。但是由于 fgetcsv返回一个数组,我建议编写一个自定义函数:

function customfgetcsv(&$handle, $length, $separator = ';'){
  if(($buffer = fgets($handle, $length)) !== false) {
      return explode( $separator, iconv( "CP1251", "UTF-8", $buffer ) );
  }
    return false;
}
于 2013-10-12T09:31:16.553 回答