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) ))
2 ответов
только что запустил код. Текст правильно закодирован и сгенерированный 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);
выше код работает, но не уверен в его эффективности.
Я думаю, что я сталкивался с этим раньше, и иногда некоторые версии excel просто не показывают правильные символы/шрифты utf8. но сам файл в utf8 уже.
попробуйте открыть csv в Notepad++ и посмотреть, является ли он utf8-bom, и если он показывает символы utf8