【发布时间】:2011-11-30 08:29:08
【问题描述】:
我想将用户的条目发送到 google 的地理编码 API。在这样做的过程中,我发现了一个问题。 当我通过我的脚本将用户输入(例如“köln+Germany”)发送到 Firefox 中的 api 时,它工作得很好。但是在 Internet Explorer 中它不起作用。
这是我的代码的豁免,足以说明问题:
header('Content-type: text/html; charset=UTF-8');
header('Cache-Control: no-cache, must-revalidate');
$loc = urlencode($_GET['loc']);
echo $address = "http://maps.googleapis.com/maps/api/geocode/json?address=$loc&sensor=false";
Firefox 中的输出($address)是:http://maps.googleapis.com/maps/api/geocode/json?address=k%C3%B6ln+Germany&sensor=false(有效!)
在 Internet Explorer 中相同的是:http://maps.googleapis.com/maps/api/geocode/json?address=k%F6ln+Germany&sensor=false(返回“INVALID_REQUEST”)
您可以看到 ö 的编码差异。在 Firefox 中是 %C3%B6,在 IE 中是 k%F6。 如果我让用户输入“k%C3%B6ln+Germany”开始,它在 Internet Explorer 中也像一个魅力。
如何使用 PHP 确保我的特殊字符在 Internet Explorer 中的转换与在 Firefox 中的转换相同。所以 ö = %C3%B6 而不是 ö = k%F6
非常感谢!
保罗
【问题讨论】:
标签: php encoding special-characters urlencode