PHP。JSON编码utf-8
我想编码json,但当我使用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\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 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)选项-有关更多说明,请参阅此答案: