Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP。JSON编码utf-8_Php_Json_Encode - Fatal编程技术网

PHP。JSON编码utf-8

PHP。JSON编码utf-8,php,json,encode,Php,Json,Encode,我想编码json,但当我使用json\u encode函数时,我得到的不是UTF-8字符串。我添加了headerheader('Content-Type:application/json;charset=utf-8')和来自数据库的数据都很好。我怎样才能解决这个问题 我的代码: foreach($dbh->query('SELECT Event.name, Event.description, Category.name as category FROM Event, Category W

我想编码json,但当我使用
json\u encode
函数时,我得到的不是UTF-8字符串。我添加了header
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_编码始终需要UTF8字符串,不管字符集如何。您必须先对所有字符串进行编码

为了澄清,如果从数据库中提取的数据尚未在utf8中,则必须对这些数据使用utf8_编码

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

注:utf8_编码仅适用于ISO 8859-1。如果您正在使用另一个字符集,请参见iconv()

如果且仅当您的数据当前以ISO 8859-1编码(或出于某种原因,纯7位ASCII)时,您应该使用
utf8\u encode
。这不是一个神奇的“生成任意字符串UTF-8”函数,正如它的名字所暗示的那样毫无帮助。我尝试了utf8_编码和不编码。结果相同。输出是什么?空的json字符串?不。像这样:Krep\u00c5\u00a1inist这是正常的!这是unicode转义字符。如果需要纯输出,请参阅JSON_UNESCAPED_UNICODE(PHP5.4)选项-有关更多说明,请参阅此答案: