gpt4 book ai didi

php fgetcsv - 字符集编码问题

转载 作者:可可西里 更新时间:2023-10-31 22:06:24 24 4
gpt4 key购买 nike

使用 PHP 5.3 fgetcsv 函数时,由于编码问题,我遇到了一些问题。请注意,该文件具有西类牙文“特殊”拉丁字符,如图形重音 á、é、í ï 等...

我得到的 CSV 文件导出了我在 MS 2008 for Mac Excel 文件中的一些结构化数据。

如果我用 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));
}

如您所见,我也尝试过使用 setlocalees_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;
}
}

查看每行读取后我在 $row 变量中得到了什么:

enter image description here

那些 ? 字符应该是带有图形重音符号的元音。

有什么线索吗?如果我使用 Windows 版 MS Excel,它会工作吗?我如何在运行时知道文件的确切编码并在读取之前设置它?

(对于那些讲西类牙语的人,不要被那些文本中如此糟糕的医学内容吓到;))。

最佳答案

试试这个:

function convert( $str ) {
return iconv( "Windows-1252", "UTF-8", $str );
}

public function getRow()
{
if (($row = fgetcsv($this->_handle, 10000, $this->_delimiter)) !== false) {
$row = array_map( "convert", $row );
$this->_line++;
return $this->_headers ? array_combine($this->_headers, $row) : $row;
} else {
return false;
}
}

关于php fgetcsv - 字符集编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13298353/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com