【问题标题】:UTF-8 BOM in php response to mootools xmlhttprequest对 mootools xmlhttprequest 的 php 响应中的 UTF-8 BOM
【发布时间】:2010-06-04 00:30:00
【问题描述】:

我正在编写我的第一个支持 AJAX 的小型 Joomla 组件。我正在使用mootools。我有一个 xmlhttprequest 来联系我的 Joomla 组件,该组件返回一个响应 - 只是由 php 回显的纯文本,例如

echo 'Hello World!';

一切正常,除了wireshark 告诉我,当客户端的javascript 读取响应时,它会以\357\273\277\357\273\277 开头。这在脚本显示的警告框中显示为响应之前的一个小方块。

我没有明确设置 xmlhttprequest 的编码; mootools 文档说它默认为 UTF8。

处理这个问题的正确方法是什么?我应该在请求上设置编码吗?哑剧类型? javascript应该摆脱它吗?我不打算在响应中包含任何需要 UTF8 的字符,所以我也可以使用普通的旧 ascii。

谢谢

【问题讨论】:

    标签: php ajax mootools xmlhttprequest byte-order-mark


    【解决方案1】:

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

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

    此外,无论出于何种原因,您的 BOM 似乎都有双份。

    This related question 可能也会有所帮助。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2014-03-10
        • 2012-09-12
        • 1970-01-01
        • 1970-01-01
        • 2011-07-21
        • 1970-01-01
        • 2015-10-23
        • 1970-01-01
        相关资源
        最近更新 更多