提前致谢。
我通过php 5.5脚本上传.csv文件,将其从Unicode转换为UTF-8,最后将其保存在文件夹中。
然后我用PHPExcel_IOFactory读取这个文件并将一些数据捕获到一个数组中。到现在为止还挺好。文件上传和保存确定,但有些东西可能会在转换过程中弄乱数据,因为我得到的数组中的文本字符串填充了这样的空格:
array(20) {
["A"]=>
string(39) "
l : 1 7 0 4 8 0 8 8 8 6 4 9 2 3 5 9 "
["B"]=>
string(51) " 2 0 1 7 - 0 8 - 0 9 T 0 0 : 2 1 : 5 7 + 0 2 : 0 0 "
["C"]=>
string(41) " a g : 2 3 8 4 2 6 1 5 5 8 3 3 9 0 2 5 8 "
["D"]=>
bool(false)
["E"]=>
string(41) " a s: 2 3 8 4 2 6 1 5 5 8 3 3 7 0 2 5 8"
["F"]=>
string(29) " D E S A R R O L L O W E B "
也许是因为分隔符。在sublime上打开.csv会显示出两个白色的空格'作为分隔符,所以如果我传递这样的东西:
$objReader->setDelimiter(' ');
它工作并读取数据,但填充空白空间。关于如何从文件中获取干净数据的一些提示?
注意:使用WAMP可正常转换文件:
$conversion = iconv(mb_detect_encoding($conversion, mb_detect_order(),
true), "UTF-8", $conversion);
在生产环境中完全无法使用该转换(文件保存为空)
答案 0 :(得分:0)
最后解决了问题。对于任何使用PHPExcel并且在字符编码方面存在相同问题的人,如果你真的需要将.xls文件保存在不同的字符集上,请在转换时尝试这样的事情:
$objReader->setDelimiter("\t");
$inputFileName = array_shift($inputFileNames);
$conversion = file_get_contents($inputFileName);
$conversion = iconv("WINDOWS-1252", "UTF-8", $conversion);
谢谢!