json_decode失败并带有德语字符(即使编码为UTF8)

时间:2013-06-27 18:07:43

标签: php google-maps-api-3 utf-8 character-encoding json

我正在使用GoogleMaps API来检索位置信息。结果通过cURL获取,并且使用json_decode将获取的字符串转换为JSON对象。

对于许多地方(例如荷兰),这就像一个魅力。但是对于许多德国人(可能还有更多像奥地利,瑞士等国家)来说,这并不像预期的那样有效。

我认为这是因为ß等'特殊'字符,还有üëäï等等。

例如:这是通过cURL(http://maps.googleapis.com/maps/api/geocode/json?address=Stoltenkampstra%C3%9Fe%2011,Bad%20Bentheim&sensor=false&language=nl

获取的字符串

以下$sResponsecURL提取的结果。 当我尝试执行json_decode($sResponse);时,其值变为null。当我执行json_last_error()时,它会显示5(表示JSON_ERROR_UTF8)。当我执行mb_detect_encoding($sResponse)时,它会显示UTF-8

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

如果您遇到此问题,请确保您已将文档设置为必须更正字符集。在我的情况下,我忘了将<meta charset='utf-8'>包含在我的index.php文件中。对我而言,这是我忽略的......愚蠢......但也许它将来会帮助你;)

正如Gumbo正确提到的,这不是解决问题的唯一方法。 (它只修复了我的浏览器中数据的显示方式)。我还使用EncodingEncoding::toUTF8() - 库中玩。这是我在寻找解决方案时发现的非常整洁且有用的课程。您可以在此处阅读:Detect encoding and make everything UTF-8