Как уже догадался Тей: Chrome использует UTF-8 (как, вероятно, рекомендуется) для параметров URL, в то время как Firefox использует Latin-1. Я не думаю, что вы можете контролировать это поведение. Также это будет трудно обработать, потому что вам нужно угадать, какую кодировку вы использовали.
Вот как работает декодирование (зависит от браузера, если вы используете UTF-8 в своем приложении):
Chrome:
$text = urldecode($_GET['text']);
Firefox:
$text = utf8_encode(urldecode($_GET['text']));
Это может быть решение, которое работает в большинстве случаев:
function urldecode_utf8($text) {
$decoded = urldecode($text);
if (!mb_check_encoding($decoded, 'UTF-8')) {
$decoded = utf8_encode($decoded);
}
return $decoded;
}