文件中的字符编码错误

时间:2013-04-05 15:25:29

标签: php character-encoding

我有一个输入,用户可以(并且必须始终)从MSword中粘贴数据;特别是© ® ™

等字符

使用html_entity_decode($foo, ENT_NOQUOTES, 'UTF-8');

将值添加到数据库系统时

当我从数据库系统中读取它时,它在屏幕上渲染很好,但是当我将数据写入文件(使用fputscsv)并将其附加到电子邮件时生成的csv文件(在Excel中打开)它像版权所有©一样出现。

有关如何以正确的文件格式获取文件的想法吗?

2 个答案:

答案 0 :(得分:0)

尝试在写入CSV字符串之前将字节顺序标记写入文件。

$byte_order_mark = "\xEF\xBB\xBF";
$contents = $byte_order_mark . $csv_string;
file_put_contents( $path_to_csv_file );

答案 1 :(得分:0)

找到解决方案;事实证明这是一个字符编码问题(我指责微软,因为在Notepad ++中打开文件时它很好)。

将数据添加到文件时使用iconv转换数据的字符编码 实施例;

foreach ($data_row as $k => $cell) {
    $data_row[$k] = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $cell);
}