http://www.example.com/?query=Траливалиのような Firefox (アドレス行) の URL を入力すると、自動的にhttp://www.example.com/?query=%D2%F0にエンコードされます。 %E0%EB%E8%E2%E0%EB%E8 .
ただし、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)); !!!
戻り値:
[偽] [偽] [偽] ��������� ???? [真実]
ある種の解決策: http://www.example.com/Траливали/ - クエリを URL 部分として送信し、mod_rewrite で解析します。