我用
$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转换的原始名称。
答案 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 - 这应该可以解决问题。