php到csv和特殊字符

php到csv和特殊字符,php,apache,csv,character-encoding,Php,Apache,Csv,Character Encoding,我已经在这里呆了一段时间了。 我试图从php脚本(从数据库获取数据)创建一个.csv文件。 我的问题是特殊字符没有正确显示 奇怪的是,数据库中的特殊字符显示正确,但我需要在条目中添加某些字符 例如,数据库返回“Humidité”(法语表示湿度)。 正确显示在导出的.csv文件中 但假设我从php脚本中添加了一个字符串 $member->humidity . ': 10% à 20%'; 在csv中,我将看到 Humidité: 10% [weird characters] 20% 所以

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

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

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

但假设我从php脚本中添加了一个字符串

$member->humidity . ': 10% à 20%';
在csv中,我将看到

Humidité: 10% [weird characters] 20%
所以humidité中的“é”是可以的,但我没有看到我在PHP中添加的“a”

我的标题看起来不错,因为一些特殊字符显示正确

$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\u charset=“utf-8”
,并在httpd.conf bu中添加了
AddDefaultCharset utf-8
,但没有解决这个问题

有什么想法吗?
谢谢

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

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

这似乎有效。

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

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


这似乎有效。

可能您的编辑器未设置为
UTF-8
。检查编辑器的字符集设置。您还可以使用编辑器(如
Notepad++

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

转换您的文件,mysql中的表是否为UTF 8格式?@tuhinsubgradey否,它们为“拉丁语-瑞典语-ci”,请尝试在UTF 8通用ci中更改,然后保存您的数据和其他内容。@tuhinsubgradey刚刚做到了。结果完全一样。无论如何谢谢你!您在mysql中的表是否采用UTF 8格式?@TuhinSubgradey否他们采用“拉丁语1\u瑞典语\u ci”尝试在UTF 8通用ci中更改它,然后保存数据和其他内容。@TuhinSubgradey刚刚做到了。结果完全一样。无论如何谢谢你!否决票的原因?唯一未正确打印的字符是他静态插入文件中的字符。因此,它很可能只是编辑的角色。否决票不是我的!我在Dreamweaver、Excel和TextEdit(Mac)中打开了该文件,这三个文件都显示了完全相同的内容。@ComputerArts:如果您使用的是Dreamweaver,请检查以下内容:更新:解释我的想法:如果您的编辑器使用了错误的字符集,那么您在PHP文件中键入的数据将被错误编码。然而,客户端应用程序接收到的标题告诉他“嘿,将其解释为UTF-8!”如果文件本身未正确进行UTF-8编码,则会导致错误。我不是被否决了吗?与其升级一个编辑器,不如升级一个更通用的“多个好的编辑器,如记事本+”。否决的原因是什么?唯一未正确打印的字符是他静态插入文件中的字符。因此,它很可能只是编辑的角色。否决票不是我的!我在Dreamweaver、Excel和TextEdit(Mac)中打开了该文件,这三个文件都显示了完全相同的内容。@ComputerArts:如果您使用的是Dreamweaver,请检查以下内容:更新:解释我的想法:如果您的编辑器使用了错误的字符集,那么您在PHP文件中键入的数据将被错误编码。然而,客户端应用程序接收到的标题告诉他“嘿,将其解释为UTF-8!”如果文件本身未正确进行UTF-8编码,则会导致错误。不是我被否决了,而是更一般的“许多好的编辑器,如Notepad++”可能更有帮助。