Character encoding 表单输入上的PHPEXCEL奇怪字符
我需要一些关于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) 好的,下面是一个例子: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
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?),我认为他们需要添加一些类来在加载到输入字段之前清理字段,我要求他们这样做,但他们不想接触他们的代码。感谢您的兴趣帮助我标记。