As Tay already suggested: Chrome uses UTF-8 (as probably recommended) for URL parameters, while Firefox uses Latin-1. I do not think you can control this behavior. It will also be difficult to handle, because you need to guess the encoding used.
This is how decoding works (it depends on the browser if you use UTF-8 in your application):
Chrome:
$text = urldecode($_GET['text']);
Firefox:
$text = utf8_encode(urldecode($_GET['text']));
This may be a solution that works in most cases:
function urldecode_utf8($text) { $decoded = urldecode($text); if (!mb_check_encoding($decoded, 'UTF-8')) { $decoded = utf8_encode($decoded); } return $decoded; }
source share