json_decode& file_get_contents未获取UTF8字符

时间:2015-01-04 02:48:07

标签: php utf-8

我用

$link = json_decode(file_get_contents("http://graph.facebook.com/111866602162732"));

该页面上的结果显示:

 "name": "L\u00e9ry, Quebec",

然后我想用重音转换它......就像这样:

$location_name = $link->name;
echo 'NAME ORIGINAL: '.$location_name;
$location_name = preg_replace('/\\\\u([0-9a-fA-F]{4})/', '&#x\1;', $location_name); // convert to UTF8
echo '  NAME after: '.$location_name;

我得到以下结果:

  NAME ORIGINAL: Léry, Quebec     NAME after: Léry, Quebec

我的preg_replace是正确的,所以它是由file_get_contents转换的原始名称。

2 个答案:

答案 0 :(得分:0)

如果file_get_contents没有给你一个格式良好的UTF-8文本,那么json_decode你将返回NULL。 Json必须采用UTF-8编码。

  

此功能仅适用于UTF-8编码的字符串。 (json_decode

所以,我猜你用其他编码读取数据。看看吧。

答案 1 :(得分:0)

最有可能的是,您将json_decode提供给您的有效UTF-8输出视为ISO-8859-1 请参阅此处,例如:http://www.i18nqa.com/debug/bug-utf-8-latin1.html

确保您将调试输出视为UTF-8 - 这应该可以解决问题。