Html实体,如€在CSV转换中不会转换为其符号


Html entities like € is not converted to its symbol in CSV conversion

我使用了来自http://code.google.com/p/parsecsv-for-php/的CSV解析器,将我的报告导出为PHP中的CSV。我已经在浏览器和Excel(导出后)中显示了€XXXX.XX中的Sales Total value,并以Euro符号显示。

但是在CSV中,它显示的不是欧元符号,而是代码€

如何将€导出到相应的CSV符号

提前感谢。快乐编码:)

这是唯一的东西,干净地为我修复它

 html_entity_decode($text, ENT_QUOTES, 'utf-8')

您需要在将字符串写入文件之前对它们使用html_entity_decode(),这将找到所有html实体并将它们替换为实际的符号。

html_special_chars()html_special_chars_decode()只适用于少数html实体,如><,而htmlentities()html_entity_decode()适用于所有实体。

或者,你可以只是做一个字符串替换(str_replace()preg_replace()或其他)为€替换为

然后尝试:

str_replace('€','€',$valuebeingexported);

根据我的Excel有一些问题显示csv文件与unicode字符。你可以在下面试一次:

使用fputcsv()utf-8处理。

如下所示:

$handler = fopen("php://output", "w");
header("Content-Type: text/csv; charset=UTF-8");
fputcsv($handler, $fields, ';', '"');
fclose($handler);

注意php://output是一个只写流,它允许你像print()和echo()一样写到输出缓冲区机制。

我不太了解CSV文件,但您应该尝试以下两种方法:

  1. 直接使用欧元符号

  2. 查找CSV文件编码

试试这个

//add BOM to fix UTF-8 in Excel
fputs($fp, $bom =( chr(0xEF) . chr(0xBB) . chr(0xBF) ));
fputcsv($handler, $fields, ';', '"');

您是否尝试使用€代替€ ?