【问题标题】:PHP. JSON encode utf-8php。 JSON 编码 utf-8
【发布时间】:2014-06-18 10:07:43
【问题描述】:

我想对 json 进行编码,但是当我使用 json_encode 函数时,我得到的不是 UTF-8 字符串。我添加了标题header('Content-Type: application/json; charset=utf-8');,数据库中的数据很好。我该如何解决这个问题?

我的代码:

foreach($dbh->query('SELECT Event.name, Event.description, Category.name as category FROM Event, Category WHERE Event.category_id = Category.category_id') as $row) {
                $event['name'] = utf8_encode($row['name']);
                $event['description'] = utf8_encode($row['description']);
                $event['category'] = utf8_encode($row['category']);
                $events[] = $event;
            }


            echo json_encode($events); 

【问题讨论】:

    标签: php json encode


    【解决方案1】:

    尽管你的字符集,PHP json_encode 总是需要 UTF8 字符串。您必须先对所有字符串进行编码。

    为了澄清,如果从数据库中提取的数据尚未使用 utf8,则必须对它们使用 utf8_encode。

    json_encode(array(
        "one" => utf8_encode("super string &éùà"),
        "two" => utf8_encode("super string &éùà")
    ));
    

    注意:utf8_encode 仅适用于 ISO 8859-1。如果您使用其他字符集,请参阅 iconv()

    【讨论】:

    • 您应该使用utf8_encode 如果,且仅当,您的数据当前以 ISO 8859-1 编码(或者,出于某种原因,纯 7 位 ASCII) .正如它的名字所暗示的那样,它不是一个神奇的“使任何字符串 UTF-8”函数。
    • 已更新。我尝试了 utf8_encode 和没有。结果一样。
    • 输出是什么?一个空的 json 字符串?
    • 没有。像这样:Krep\u00c5\u00a1inis
    • 这是正常的!这是 unicode 转义字符。如果您想要纯输出,请参阅 JSON_UNESCAPED_UNICODE (php 5.4) 选项 - php.net/manual/en/function.json-encode.php 另请参阅此答案以获得更多解释:stackoverflow.com/a/7382317/911718
    猜你喜欢
    • 1970-01-01
    • 2012-08-02
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 2012-03-10
    • 1970-01-01
    相关资源
    最近更新 更多