但是像http://www.example.com/#ajax_call?query=Траливали这样的URL没有被转换。
其他浏览器(如IE8)根本不转换查询。
问题是:如何检测(在PHP中)查询是否已编码?如何解码?
我尝试过:
$str = iconv('cp1251', 'utf-8', urldecode($str));
$str = utf8_decode(urldecode($str));
$str = (urldecode($str));
许多来自http://php.net/manual/en/function.urldecode.php的函数。什么都不起作用。
测试:
$str = $_GET['str'];
d('%D2%F0%E0%EB%E8%E2%E0%EB%E8' == urldecode('%D2%F0%E0%EB%E8%E2%E0%EB%E8'));
d('%D2%F0%E0%EB%E8%E2%E0%EB%E8' == $str);
d('Траливали' == $str);
d(urldecode($str));
d(utf8_decode(urldecode($str)));
!!! d('%D2%F0%E0%EB%E8%E2%E0%EB%E8' == urlencode($str)); !!!
返回:
[false] [false] [false] ��������� ???? [true]
一种解决方案:http://www.example.com/Траливали/ - 将查询作为url的一部分发送并使用mod_rewrite进行解析。