php中的UTF-8 BOM对mootools xmlhttprequest的响应

php中的UTF-8 BOM对mootools xmlhttprequest的响应,php,ajax,mootools,xmlhttprequest,byte-order-mark,Php,Ajax,Mootools,Xmlhttprequest,Byte Order Mark,我正在编写我的第一个支持AJAX的Joomla组件。我在用moools。我得到了一个xmlhttprequest来联系我的Joomla组件,该组件返回了一个响应——只是php响应的纯文本,如 echo 'Hello World!'; 除了wireshark告诉我,当客户端的javascript读取响应时,响应前面会加上\357\273\277\357\273\277外,其他都可以正常工作。这将在脚本显示的警报框中的响应之前显示为一个小正方形 我没有在xmlhttprequest上显式设置编码;

我正在编写我的第一个支持AJAX的Joomla组件。我在用moools。我得到了一个xmlhttprequest来联系我的Joomla组件,该组件返回了一个响应——只是php响应的纯文本,如

echo 'Hello World!';
除了wireshark告诉我,当客户端的javascript读取响应时,响应前面会加上\357\273\277\357\273\277外,其他都可以正常工作。这将在脚本显示的警报框中的响应之前显示为一个小正方形

我没有在xmlhttprequest上显式设置编码;mootools文档说它默认为UTF8

正确的处理方法是什么?我应该设置请求的编码吗?Mime类型?javascript应该去掉它吗?我不打算在响应中使用任何需要UTF8的字符,所以使用普通的旧ascii也可以


谢谢

通常不建议使用UTF-8 BOM。字节顺序在UTF-8中是不能颠倒的,因此它除了通知消费源以下内容确实是UTF-8编码的之外,没有什么作用

我会在Joomla端(首选)或使用javascript剥离它

另外,无论出于什么原因,看起来您有一个双BOM


可能也会有帮助。

我使用的是Microsoft Expression Web 3,尽管设置为不为php文件添加BOM表,但在php文件的开头确实有BOM表。我使用了一个十六进制编辑器来删除BOM表,现在表达式在保存时不再添加BOM表

我不知道为什么xmlhttprequest响应中有两个BOM,但现在它们都消失了