【问题标题】:Weird character at start of json content typejson 内容类型开头的奇怪字符
【发布时间】:2010-03-19 05:12:24
【问题描述】:

我正在尝试返回从 MySQL 服务器读取的 json 内容。这应该很容易,但是在内容的开头会不断出现一个“奇怪”的字符。

我有两个页面用于返回内容:

  1. kcb433.sytes.net/as/test.php?json=true&limit=6&input=d

    这个 test.php 来自 Timothy Groves 编写的脚本,它将数组转换为 json 输出

  2. http://kcb433.sytes.net/k.php?k=4

    这个应该是一样的

我试图在这里验证它jsonformatter.curiousconcept.com,但只有第 1 页得到验证,第 2 页说它不包含 JSON 数据。

如果直接访问两个页面都没有问题。那么有什么区别,为什么两者都没有得到验证?

然后我找到了这个页面jsonformat.com 并尝试了同样的事情。第 1 页还可以,第 2 页不行,但令人惊讶的是,数据可以读取。一目了然,

{"a":"b"}

可能看起来不错,但前面有一个角色。

根据网上的一个十六进制编辑器,这是上面字符串的值(不是9个值,而是10个):

-- 7B 22 61 22 3A 22 62  22 7D

第2页回显json的代码是:

header("Content-Type: application/json");
echo "{\"a\":\"b\"}";

【问题讨论】:

    标签: json character


    【解决方案1】:

    您的k.php 文件开头有BOM signature,再次使用不带BOM 的UTF8 保存k.php

    【讨论】:

    • 我正在输入这个,太慢了!想补充一点:使用 Fiddler 很容易看到 BOM,它有一个内置的十六进制查看器。
    • 您使用哪个编辑器来编辑 php 文件?我注意到记事本没有UTF-8 without BOM 的选项。在 Notepad++ 中,您可以轻松选择UTF-8 without BOM 编码。
    • 我正在使用dreamweaver,它具有该选项,但它也具有Unicode 规范化表单选项。我要试试notepad++
    • 哇!记事本++是最好的!没有 BOM 的 UTF-8,点击并工作。谢谢 S.Mark
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多