Php 在响应的开头有额外的未定义字符

Php 在响应的开头有额外的未定义字符,php,Php,这阻止了我使用JSON,也阻止了使用React或Ember。当使用AJAX向服务器发送请求时,我会得到一个额外的未定义的unicode字符,这会导致解析器错误,因为它会破坏JSON 我已经检查了我所有的每个php文件,以获得额外的抛出、回送、打印或任何其他函数,这些函数将打印一些东西,但什么都没有。这并不局限于JSON,但在等待文本时,这不会是一个问题。但如果使用JSON,它将被解析,并被破坏 这里有可能会干扰的东西吗 要获得更多的澄清,请看一下这个。红点表示未定义的字符 另外,我不会用?>标

这阻止了我使用JSON,也阻止了使用React或Ember。当使用AJAX向服务器发送请求时,我会得到一个额外的未定义的unicode字符,这会导致解析器错误,因为它会破坏JSON

我已经检查了我所有的每个php文件,以获得额外的抛出、回送、打印或任何其他函数,这些函数将打印一些东西,但什么都没有。这并不局限于JSON,但在等待文本时,这不会是一个问题。但如果使用JSON,它将被解析,并被破坏

这里有可能会干扰的东西吗

要获得更多的澄清,请看一下这个。红点表示未定义的字符

另外,我不会用?>标记关闭任何PHP文件,并将开始标记放在每个文件的开头


PPS。我使用的是升华文本3,我不相信它与BOM有任何关系。此外,chrome和firefox中的红点表示从服务器发送的不可打印的特殊unicode字符,服务器端只有PHP。

正如我在上面评论中发布的链接中所回答的那样

Windows记事本将BOM信息添加到UTF-8文件(即文件开头的FFFE或FEFF),这将解释此行为。例如,在记事本++中,可以使用“格式”菜单阻止UTF-8包含BOM信息


确保还检查了包含的php文件的BOM表

用于搜索和删除文件中的BOM表!:


find-类型f-exec sed'1s/^\xEF\xBB\xBF/'-i.bak{}\-exec rm{}.bak\

结束后的空行
?>
标记?试着删除结束标记。你能举一个例子说明你期望得到什么吗。。在使用记事本保存文件之前是否有空格?正如@Paul Corvella所说,这可能是一个问题。请确保您的文件已转换为UTF-8,而无需BOM@unxp是的。。这个问题以前提过。。看看这个帖子:谢谢你的回答。但我在Linux Ubuntu上使用的是Sublime Text 3,默认情况下它使用的是不带BOM的UTF-8。您是否曾在任何时候使用另一个编辑器打开过该文件,该编辑器可能已将其作为UTF-8 with BOM打开,并因此将其与BOM一起保存,从而使Sublime Text 3相信它将来需要与BOM一起保存。您在回复中仍然看到相同的BOM字符吗?我在ST3中再次保存了没有BOM选项的所有文件,但仍然显示错误。我相信这不是问题所在。还有没有看到echo试图输出的内容?@MahdiPOnline您已经搜索了所有文件(假设字符来自其他文件)。你可以看看这个如何搜索BOM的线程:如果你在生成响应的php文件中包含其他php文件,并且这些文件在没有BOM的情况下不会保存,那么它们(它)可能就是你在响应中看到BOM的原因。。。看看这个有类似问题的线程: