我正在尝试用希伯来语读取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);
答案 0 :(得分:1)
给世界T_PAAMAYIM_NEKUDOTAYIM
的语言现在不太可能出现希伯来字母的问题; - )。
Checking the encoding of the strings(var_dump
可能还不够!)Manvel对this question的解决方案可能对您有所帮助:
问题是该函数返回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; }