Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将问题显示到Excel/文本文件中的字符?_Php_Encoding_Utf 8_Preg Replace - Fatal编程技术网

Php 将问题显示到Excel/文本文件中的字符?

Php 将问题显示到Excel/文本文件中的字符?,php,encoding,utf-8,preg-replace,Php,Encoding,Utf 8,Preg Replace,当我打开为许多数据导出的excel文件时,一些字符显示为:�尽管我将编码设置为utf-8,并且在用于导出数据的脚本中,我使用以下函数:preg_replace('/[\s]+/','',@$tring)和$string=“le secteur publicáréagir”在excel文件中,$string如下所示:le secteur public� réagir,为什么“é”被转换为正确的,而“á”不是?utf-8被转换为正确的 谢谢。在使用preg\u replace('/[\s]+/','

当我打开为许多数据导出的excel文件时,一些字符显示为:
尽管我将编码设置为
utf-8
,并且在用于导出数据的脚本中,我使用以下函数:
preg_replace('/[\s]+/','',@$tring)
$string=“le secteur publicáréagir”
在excel文件中,$string如下所示:
le secteur public� réagir
,为什么“é”被转换为正确的,而“á”不是?utf-8被转换为正确的


谢谢。

在使用
preg\u replace('/[\s]+/','',@$tring)之前是否尝试过
echo$string

该代码在使用Chrome时运行正常,其输出为
le secteur publicáréagir

当我在命令行中运行这段代码时,它的输出是
le secteur publicαrΘagir


因此,我认为这里的问题不是
preg_replace('/[\s]+/','.@$tring)

您的正则表达式缺少
u
(utf-8)修饰符:

preg_replace('/[\s]+/u',' ',@$tring);
                     ^

请发布脚本以导出数据(它可能会被PHP转换为ASCII文本),好吗?此外,如果您在Excel中打开常规utf-8格式的信息,但是从文本中打开,这并不意味着Excel理解它在打开时进行自己的转换。一个代码示例会很有帮助。可能是excel文件的字符集。如何设置它?对于utf8编码?我如何告诉excel为所有特殊字符和文本类型设置utf8编码?当我删除preg_replace('/[\s]+/','@$tring)时,请谅解;然后输出正确显示…但对于某些特殊字符,必须这样做。