urlencode serve a codificare un parametro della query string affichè possa essere utilizzato in un url. urldecode non è necessario per recuperare il contenuto di un parametro della query string dell'url.

Posto un esempio affichè chiarisca:
(salva il file come testo codficato utf-8)
Codice PHP:
<!DOCTYPE html>
<html>
    <head>
        <title>urlencode</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width">
    </head>
    <body>
        <?php
            
if(isset($_GET['msg']))
                echo 
"Messaggio Ricevuto: $_GET[msg]";
            
$messaggio "Questa è la mia citt&agrave;";
        
?>
        <div><a href="index.php?msg=<?php echo urlencode($messaggio)?>">Cliccami</a></div>
    </body>
</html>
La url del link cliccami sarà:
codice:
http://localhost/index.php?msg=Questa+%C3%A8+la+mia+citt%26agrave%3B
L'output della pagina dopo aver cliccato il link cliccami:
codice:
Messaggio Ricevuto: Questa è la mia città        
Cliccami