gpt4 book ai didi

php - fgetcsv() 忽略位于行首的特殊字符!

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

我有一个简单的脚本,它接受一个 CSV 文件并将每一行读入一个数组。然后我循环浏览第一行的每一列(在我的例子中它包含调查的问题)并将它们打印出来。调查采用法语,只要问题的第一个字符是特殊字符(é、ê、ç 等),fgetcsv 就会忽略它。

值中间的特殊字符只有当它们是第一个字符时才不受影响。

我试图调试它,但我感到困惑。我用文件的内容做了一个 var_dump,字符肯定在那里:

var_dump(utf8_encode(file_get_contents($_FILES['csv_file']['tmp_name'])));

这是我的代码:

if(file_exists($_FILES['csv_file']['tmp_name']) && $csv = fopen($_FILES['csv_file']['tmp_name'], "r"))
{
$csv_arr = array();

//Populate an array with all the cells of the CSV file
while(!feof($csv))
{
$csv_arr[] = fgetcsv($csv);
}

//Close the file, no longer needed
fclose($csv);

// This should cycle through the cells of the first row (questions)
foreach($csv_arr[0] as $question)
{
echo utf8_encode($question) . "<br />";
}

}

最佳答案

在调用 fgetcsv() 之前,您是否正确设置了语言环境?

setlocale(LC_ALL, 'fr_FR.UTF-8');

否则,fgetcsv() 不是多字节安全的。

确保将其设置为出现在可用语言环境列表中的内容。在 linux 上(当然是在 debian 上)你可以通过做

locale -a

你应该得到类似...

C
en_US.utf8
POSIX

对于 UTF8 支持,选择末尾带有 utf8 的编码。如果您的输入是用其他东西编码的,您将需要使用适当的语言环境 - 但首先要确保您的操作系统支持它。

如果您将语言环境设置为您的系统上不可用的语言环境,它不会帮助您。

关于php - fgetcsv() 忽略位于行首的特殊字符!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2238971/

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