Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Character encoding 表单输入上的PHPEXCEL奇怪字符_Character Encoding_Phpexcel_Nul - Fatal编程技术网

Character encoding 表单输入上的PHPEXCEL奇怪字符

Character encoding 表单输入上的PHPEXCEL奇怪字符,character-encoding,phpexcel,nul,Character Encoding,Phpexcel,Nul,我需要一些关于PHPEXCEL库的帮助,一切都很好,我正在成功地将我的SQL查询提取到excel5文件,我需要将此文件交给运输公司,以便自动收集有关包的信息,不幸的是,生成的excel文件在单元格文本的每个字母之间都有一些ascii字符,导入excel文件时,需要手动删除这些字符。 如果我打开excel文件,我看到的一切都很好:公司名称,如果我用记事本++打开excel文件,我看到的单元格值是这样的:C(NUL)O(NUL)M(NUL)P(NUL)A(NUL)N(NUL)Y N(NUL)A(NU

我需要一些关于PHPEXCEL库的帮助,一切都很好,我正在成功地将我的SQL查询提取到excel5文件,我需要将此文件交给运输公司,以便自动收集有关包的信息,不幸的是,生成的excel文件在单元格文本的每个字母之间都有一些ascii字符,导入excel文件时,需要手动删除这些字符。 如果我打开excel文件,我看到的一切都很好:公司名称,如果我用记事本++打开excel文件,我看到的单元格值是这样的:C(NUL)O(NUL)M(NUL)P(NUL)A(NUL)N(NUL)Y N(NUL)A(NUL)M(NUL)E 如果我用excel再次打开文件并保存,然后用notepad++重新打开,我会看到公司名称。 所以我不明白为什么每次我用PHPEXCEL创建一个excel文件时,我所有单词的每个字母都被(nul)每个字母填充。 那么,如何防止生成的excel文件在每个单词之间包含(nul)

此外,如果您打开由PHPExcel生成的原始excel文件,则样本也将填充(nul),如果您打开并保存它,则(nul)将消失。 任何帮助都将不胜感激,谢谢。 什么是(nul)???0x00???字符(0)

好的,下面是一个例子:

error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
date_default_timezone_set('Europe/London');

if (PHP_SAPI == 'cli')
    die('Disponibile solo su browser');

require_once dirname(__FILE__) . '/Classes/PHPExcel.php';
    $objPHPExcel = new PHPExcel();
    $objPHPExcel->getProperties()->setCreator("Solidus")
                            ->setLastModifiedBy("Solidus")
                            ->setTitle("Import web")
                            ->setSubject("Import File")
                            ->setDescription("n.a")
                            ->setKeywords("n.a")
                            ->setCategory("n.a");
    $objPHPExcel->setActiveSheetIndex(0)
                ->setCellValueExplicit("A1", "COMPANY")
                ->setCellValue('A2', 'SAMSUNG');
$objPHPExcel->getActiveSheet()->setTitle('DDT');
$objPHPExcel->setActiveSheetIndex(0);
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="TEST.xls"');
header('Cache-Control: max-age=0');
header('Cache-Control: max-age=1');
header('Cache-Control: private',false);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
ob_end_clean();
$objWriter->save('php://output');
从这个小示例中可以看到,这个脚本创建了一个包含2个单元格的文件excel5,A1=公司,A2=三星

当我将此文件发送给运输公司时,他们会将文件导入他们的系统,但正如您从图片中看到的,每个字母之间都有一个奇怪的字符

因此,我注意到每次我用记事本++打开生成的Excel5文件时,我都会得到: S(nul)A(nul)M(nul)S(nul)U(nul)N(nul)G

如果我用excel保存保存,然后用记事本++再次打开,我会得到: 三星 这个文件适合运输公司

所以我的问题是,我应该如何避免生成的文件在每个字母之间包含thi'(nul)字符???? 要帮忙吗


我自己找到了解决方案,我解释一下,以防有人也有这个问题:

没有办法更改由PHPEXCEL对excel文件进行编码的方式 所以我发现问题出在读取文件时,我做了一些模拟并重现了问题,每次a读取文件并将结果输入到a中,得到奇怪的字符:

C�O�M�P�A�N�Y�
如果我将输出enconding设置为如下所示:

$excel->setOutputEncoding('UTF-8');
文件加载正常,因此问题不是创建excel文件,而是读取excel文件

如果我用ECHO打印变量,我会得到:“COMPANY”, 如果我把变量作为值输入,我得到:“C�O�M�P�A.�N�Y�"


设置输出可以解决问题,但我想知道,当我将变量作为值输入时,为什么会出现差异,谢谢

提供了一个最小、完整且可验证的BIFF格式Excel文件(xls)示例使用双字节编码;因此,如果我用记事本++打开它,我希望看到的就是这个……重要的是在MS Excel中打开它时看到的内容……但是,它确实希望插入单元格的所有数据都是UTF-8。运输公司如何读取Excel文件?我需要将文件加载到他们的网站(php/Excel reader?),我认为他们需要添加一些类来在加载到输入字段之前清理字段,我要求他们这样做,但他们不想接触他们的代码。感谢您的兴趣帮助我标记。