使用PHP 5.3 fgetcsv
功能,我遇到由于编码问题的一些问题。 请注意,文件有西班牙“特殊”拉丁字符像图形口音A,E,I I,等...
我得到的CSV文件中的Mac Excel文件的MS 2008年出口了一些结构化的数据我有。
如果我在Mac OS X打开TextEdit
应用程序,一切似乎都去完善。
但是,当我得到了我的PHP程序,并尝试使用fgetcsv PHP函数读取CSV,我没有得到它正确读取的字符集。
/**
* @Route("/cvsLoad", name="_csv_load")
* @Template()
*/
public function cvsLoadAction(){
//setlocale(LC_ALL, 'es_ES.UTF-8');
$reader = new Reader($this->get('kernel')->getRootDir().'/../web/uploads/documents/question_images/2/41/masiva.csv');
$i = 1;
$r = array("hhh" => $reader -> getAll());
return new Response(json_encode($r, 200));
}
正如你所看到的,我曾尝试也使用setlocale
来es_ES.UTF-8
但没有得到它的工作。
读一部分来自这里:
public function getRow()
{
if (($row = fgetcsv($this->_handle, 10000, $this->_delimiter)) !== false) {
$this->_line++;
return $this->_headers ? array_combine($this->_headers, $row) : $row;
} else {
return false;
}
}
看看我在每一行读取后$行变量得到:
那些?
字符应该是与他们的图形口音的元音。
那边的任何线索? 如果我用MS Excel的Windows它的工作? 我怎么能知道在运行时文件的准确编码和读取之前设置呢?
(对于那些讲西班牙语的人,不要惊恐,在这些文本,这么恶劣的医疗东西;))。