繁体   English   中英

php到csv和特殊字符

[英]php to csv and special characters

我已经在这一段时间了。 我正在尝试从php脚本创建一个.csv文件(从数据库中获取数据)。 我的问题是特殊字符无法正确显示。

奇怪的是,来自数据库的特殊字符显示正确,但他需要在条目中添加某些字符。

例如,数据库返回“Humidité”(法语表示湿度)。 这在导出的.csv中正确显示。

但是让我说我​​从我的PHP脚本中添加一个字符串

$member->humidity . ': 10% à 20%';

在csv我会看到

Humidité: 10% [weird characters] 20%

所以来自湿度的“é”还可以,但我没有看到我在PHP中添加的“à”。

我的标题似乎没问题,因为正确显示了一些特殊字符

$data = the whole csv file in a string      

header('Content-Encoding: UTF-8');
header('Content-type: text/csv; charset=UTF-8');
header("Content-Disposition: attachment; filename=file.csv");
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header("Content-Length: " . strlen($data));
echo "\xEF\xBB\xBF"; // UTF-8 BOM
echo $data;

所以我的猜测是问题来自我的Apache服务器。

当我发现这个时,我在php.ini中更改了我的default_charset = "utf-8" ,并在我的httpd.conf bu中添加了AddDefaultCharset UTF-8 ,但没有解决它。

有任何想法吗? 谢谢!

可能,您的编辑器未设置为UTF-8 检查编辑器的字符集设置。 您还可以使用Notepad++等编辑器转换文件。

您需要告诉PHP和MySQL您的数据是UTF-8,因为它们都默认为ASCII(或者至少它们为我做了)。 我这样做:

setlocale(LC_ALL, 'en_US.utf8');
mysql_query("SET NAMES 'utf8'");

这似乎有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM