When I type in Firefox (in the address line) URL like http://www.example.com/?query=Траливали, it is automatically encoded to http://www.example.com/?query=%D2%F0%E0%EB%E8%E2%E0%EB%E8.
But URL like http://www.example.com/#ajax_call?query=Траливали is not converted.
Other browsers such as IE8 do not convert query at all.
The question is: how to detect (in PHP) if query is encoded? How to decode it?
I've tried:
$str = iconv('cp1251', 'utf-8', urldecode($str) );
$str = utf8_decode(urldecode($str));
$str = (urldecode($str));
many functions from http://php.net/manual/en/function.urldecode.php Nothing works.
Test:
$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)); !!!
Returns:
[false] [false] [false] ��������� ???? [true]
Some kind of a solution: http://www.example.com/Траливали/ - send a query as a url part and parse with mod_rewrite.
d('%...' == rawurlencode($str))
– Momentary$str == 'Траливали'
. Are you sure you are saving the php script in the right encoding? What happens if you putecho 'Траливали';
in your script? Does it appear on screen correctly? – Momentary