0

下面是我如何在根文件夹中使用 unicode 字符写入数据

<?php
mysql_connect('localhost','root','');
mysql_query ("set character_set_client='utf8'"); 
mysql_query ("set character_set_results='utf8'"); 
mysql_query ("set collation_connection='utf8_general_ci'"); 
mysql_select_db('test') or die('3');

$q = mysql_query("SELECT * FROM `t1`");
$d = '';
while ($r = mysql_fetch_array($q)) {
    $d .= $r['col1'];
}

function writeUTF8File($filename,$content) {
    $f=fopen($filename,"w");

    # Now UTF-8 - Add byte order mark
    fwrite($f, pack("CCC",0xef,0xbb,0xbf));
    fwrite($f,$content);
    fclose($f);
}

writeUTF8File('utf.csv', $d);
?>

但是当用 Microsoft Office Excel 2007 打开这个文档时,数据变成

在此处输入图像描述

经过快速研究后,我需要使用导入,"From Other Sources"然后我可以看到正确的数据

在此处输入图像描述

所以问题是如何在不导入的情况下打开此文档(“来自其他来源”),因为稍后我需要将此文档传递给我的客户(不确定他们是否了解导入并在可以看到所有数据之前进行一些设置)。

4

1 回答 1

0

Mine Excel 在带有 BOM 的 UTF8 csv 文件上表现良好。

使用十六进制编辑器检查您的 csv 文件。我很确定您有以 Excel 编码显示的字符,而不是所需的字符。

尝试以下操作:

$f=fopen($filename,"wb");

这将以二进制形式写入 PHP 字符串,而不是对所有字符进行编码。

附加检查:如果您输出$d到 HTML,它会显示正确的字符吗?

我还从fwrite() 和 UTF8获得了一些信息。

于 2013-09-12T08:43:21.827 回答