像€这样的Html实体在CSV转换中不会转换为其符号

时间:2012-01-04 06:08:33

标签: php html csv

我使用了来自http://code.google.com/p/parsecsv-for-php/的CSV解析器,将我的报告导出为PHP格式的CSV。我在€XXXX.XX,浏览器和Excel(导出后)中显示了销售总价值,显示为欧元符号。

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

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

提前致谢。 快乐的编码:)

6 个答案:

答案 0 :(得分:3)

这是唯一能为我彻底修复它的东西

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

答案 1 :(得分:2)

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

html_special_chars()html_special_chars_decode()仅适用于几个html实体,例如><,而htmlentities()html_entity_decode()适用于所有他们。

或者,您可以为str_replace()执行字符替换(preg_replace()€或其他内容)以替换为

然后尝试:

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

答案 2 :(得分:1)

根据我的说法Excel显示带有unicode字符的CSV文件时出现问题。您可以尝试下面一次:

使用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()相同的方式写入输出缓冲区机制。

答案 3 :(得分:1)

我对CSV文件知之甚少,但您应该尝试以下两点:

  1. 直接放入欧元符号。

  2. 查找CSV文件编码。

答案 4 :(得分:0)

您是否尝试将€用于€而不是€

答案 5 :(得分:0)

试试这个

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