Don*_*Den 10 php csv codeigniter hebrew
嗨,我正在尝试用HEBREW文本写一个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);
?>
Run Code Online (Sandbox Code Playgroud)
我检查了互联网并添加了" fputs($ fp,$ bom =(chr(0xEF).chr(0xBB).chr(0xBF))) "但它没有成功.有人能帮我吗.
以下是我得到的输出.
刚刚运行了你的代码。文本编码正确,生成的 csv 有效。在支持希伯来语文本的文本编辑器中打开 CSV 将正确显示。要打开包含希伯来语的 CSV,您需要按照此处建议的说明进行操作
\n\n更新:
\n\n事实证明,MS 使用 UTF-16,而不仅仅是它使用 UTF-16LE(小端)。为了正确打开 MS CSV,您需要 UTF-16LE 编码文本、制表符分隔文件。
\n\n$list = array (\n array(\'\xd7\xa9\xd7\x9c\xd7\x98\xd7\x9c\', \'\xd7\xa9\xd7\x9c\xd7\x98\xd7\x9c\', \'\xd7\xa9\xd7\x9c\xd7\x98\xd7\x9c\', \'\xd7\xa9\xd7\x9c\xd7\x98\xd7\x9c\'),\n array(\'123\', \'456\', \'789\'),\n array(\'"\xd7\xa9\xd7\x9c\xd7\x98\xd7\x9c"\', \'"\xd7\xa9\xd7\x9c\xd7\x98\xd7\x9c"\')\n );\n\n$fp = fopen(\'file.csv\', \'w\');\n\n//UTF-16LE BOM\nfputs($fp, chr(0xFF) . chr(0xFE));\n\nforeach ($list as $fields) {\n $out = \'\';\n foreach ($fields as $k => $v){\n $fields[$k] = mb_convert_encoding($v, \'UTF-16LE\', \'UTF-8\'); \n }\n\n // UTF-16LE tab\n $out = implode(chr(0x09).chr(0x00), $fields);\n\n // UTF-16LE new line\n fputs($fp, $out.chr(0x0A).chr(0x00));\n}\nfclose($fp);\nRun Code Online (Sandbox Code Playgroud)\n\n上面的代码可以工作,但不确定其效率。
\n