Codeigniter — PHP написать на иврите / UTF-8 в CSV

Привет, я пытаюсь написать CSV с текстом на иврите. Он пишет какой-то символ, а не текст на иврите. Ниже мой код PHP.

<?php
$list = array (
array('שלטל', 'שלטל', 'שלטל', 'שלטל'),
array('123', '456', '789'),
array('"שלטל"', '"שלטל"')
);
$fp = fopen('file.csv', 'w');
//fputs($fp, $bom =( chr(0xEF) . chr(0xBB) . chr(0xBF) ));
foreach ($list as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
?>

Я проверил в интернете и добавил «fputs ($ fp, $ bom = (chr (0xEF). chr (0xBB). chr (0xBF)))«но это не сработало. Может кто-нибудь мне помочь.

Ниже приведены результаты, которые я получаю.

введите описание изображения здесь

10

Решение

Просто запустил свой код. Текст правильно закодирован и сгенерированный CSV является действительным. Открытие CSV в текстовом редакторе, который поддерживает текст на иврите, будет отображаться правильно. Чтобы открыть CSV, содержащий иврит, вы должны следовать инструкциям, как предложено Вот

Обновить:

Так получается, что MS использует UTF-16, а не только то, что она использует UTF-16LE (little-endian). Для правильного открытия MS CSV необходим кодированный в кодировке UTF-16LE файл с разделителями табуляции.

$list = array (
array('שלטל', 'שלטל', 'שלטל', 'שלטל'),
array('123', '456', '789'),
array('"שלטל"', '"שלטל"')
);

$fp = fopen('file.csv', 'w');

//UTF-16LE BOM
fputs($fp, chr(0xFF) . chr(0xFE));

foreach ($list as $fields) {
$out = '';
foreach ($fields as $k => $v){
$fields[$k] = mb_convert_encoding($v, 'UTF-16LE', 'UTF-8');
}

// UTF-16LE tab
$out = implode(chr(0x09).chr(0x00), $fields);

// UTF-16LE new line
fputs($fp, $out.chr(0x0A).chr(0x00));
}
fclose($fp);

Приведенный выше код работает, хотя и не уверен в его эффективности.

3

Другие решения

Я думаю, что сталкивался с этим раньше, и иногда некоторые версии Excel просто не показывают надлежащие символы / шрифты utf8. но сам файл уже имеет utf8.

Попробуйте открыть CSV-файл в Notepad ++ и посмотреть, является ли он utf8-bom и показывает ли он символы utf8

0

По вопросам рекламы [email protected]